web-dev-qa-db-ja.com

Angularjs TypeError:undefinedは関数ではありません

angular jsをいじり始めたばかりで、ポストアクションを介してデータを読み込もうとしています。

私はangularjsv.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は 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 Object.e。$eval( http://ajax.googleapis.com/ajax/libs/angularjs/1.0 .2/angular.min.js:86:22 )atObject.e。$ digest( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular。 min.js:84:198 )atObject.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:3 )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

誰か助けてもらえますか?

ありがとう

[〜#〜]編集[〜#〜]file.php:

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

有効なjsonオブジェクトのようです。

6
jribeiro

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();
}
6
Justen