2012-11-03 36 views
6

Tôi chỉ bắt đầu lộn xộn với js góc và tôi đang cố gắng tải dữ liệu thông qua một hành động bài đăng.Angularjs TypeError: undefined không phải là chức năng

Tôi đang sử dụng angularjs v.1.0.2

Đây là mã của tôi: HTML:

<!DOCTYPE html> 
<html ng-app> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
     <title></title> 
     <meta name="description" content=""> 
     <meta name="viewport" content="width=device-width"> 

     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script> 
     <script src="<?php echo $baseUrl?>/js/profilling/main.js"></script> 
    </head> 
    <body> 
     <div ng-controller="GroupsCtrl"> 

     </div> 
    </body> 
</html> 

main.js:

function GroupsCtrl($scope, $http) { 
    $scope.url = '/file.php'; 
    $scope.images = []; 

    function handleGroupsLoaded(data, status) { 
     console.log(data); 
    } 

    $scope.fetch = function() { 
     $http.post($scope.url).success($scope.handleGroupsLoaded); 
    } 

    $scope.fetch(); 
} 

Tôi đang cố gắng để làm theo jsfiddle này: http://jsfiddle.net/simpulton/wHL3F/

Nhưng tôi nhận được lỗi sau:

TypeError: undefined is not a function at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:92:92 at i (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:76:119) at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:76:352 at Object.e.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:86:220) at Object.e.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:84:198) at Object.e.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:86:379) at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:92:330) at o (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:95:407) at XMLHttpRequest.q.onreadystatechange (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:96:334)

Có ai giúp được không?

Cảm ơn

EDIT file.php:

echo '{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 
'; 

Nó có vẻ như một đối tượng JSON hợp lệ.

+1

Có lẽ bạn chỉ cần khai báo 'chức năng handleGroupsLoaded (dữ liệu, tình trạng) '' $ như scope.handleGroupsLoaded = function (dữ liệu, tình trạng) {. ..} ' – Justen

+0

và bây giờ tôi cảm thấy câm :) cảm ơn !! làm việc như người ở! – jribeiro

Trả lời

6

Bạn chỉ cần đăng ký handleGroupsLoaded() trong $scope

function GroupsCtrl($scope, $http) { 
    $scope.url = '/file.php'; 
    $scope.images = []; 

    $scope.handleGroupsLoaded = function(data, status) { 
     console.log(data); 
    } 

    $scope.fetch = function() { 
     $http.post($scope.url).success($scope.handleGroupsLoaded); 
    } 

    $scope.fetch(); 
} 
Các vấn đề liên quan