2012-11-03 22 views
6

私はちょうど角度のjsを混乱させ始めています。私はポストアクションを通してデータをロードしようとしています。Angularjs TypeError:未定義は関数ではありません

私はここでangularjs v.1.0.2

を使用していますが、私のコードです: 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(); 
} 

私は従うことをしようとしていますこのjsfiddle:http://jsfiddle.net/simpulton/wHL3F/

しかし、私は次のエラーが表示されます:

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)

誰でも手助けできますか?それは有効なJSONオブジェクトのように思える

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

おかげ

EDIT file.php。

+1

handleGroupsLoaded()を登録する必要があります。 ..} ' – Justen

+0

と今私は気が気になりません:)感謝!魅力的に働いた! – jribeiro

答えて

6

あなたはたぶん、あなただけの `関数handleGroupsLoaded(データ、ステータス)`として `$ scope.handleGroupsLoaded =機能(データ、ステータスを){宣言する必要があり$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(); 
}