1

コントローラーの $resource によって、反復処理を繰り返して id で検索し、以下に示すタイプの JSON オブジェクトから id に対応する他の値を返そうとしています。この場合、どこが間違っているのか理解できませんか? 助けてください!

これがコントローラー

appSettings.controller('applistController', ['$scope', 'AppListService',
    function($scope, AppListService){
    // Have to iterate here to search for an id, how?
    // The Above app.json file is returned by the ApplistService(not showing the factory here as it works already.)
        $scope.allapps = AppListService.listAllApps().get();
    // console.log($scope.allapps.data) returns undefined as so does console.log($scope.allapps.length).
    // Where am I wrong?
    }
]);

JSON のタイプは次のとおりです。

{"data":[
    {
      "id":"files_trashbin",
      "name": "TrashBin",
      "licence":"AGPL",
      "require":"4.9",
      "shipped": "true",
      "active":true
    },
    {
      "id":"files_external",
      "name": "External Storage",
      "licence":"AGPL",
      "require":"4.93",
      "shipped":"true",
      "active":true
    }
    ],
  "status":"success"
}
4

2 に答える 2

2

AppListService.listAllApps().get();返品の約束だと思います。実際のデータを取得する前に印刷しようとしているようです。

次のアプローチを使用します。

var appSettings = angular.module('myModule', ['ngResource']);

appSettings.controller('applistController', ['$scope', 'AppListService',
function($scope, AppListService){

     AppListService.listAllApps()
                        .then(function (result) {
                           $scope.allapp = result;                           
                        }, function (result) {
                            alert("Error: No data returned");
                        });  

}]);


appSettings.factory('AppListService', ['$resource','$q',  function($resource, $q) {

  var data = $resource('somepath', 
         {},
        { query: {method:'GET', params:{}}}
                 );


       var factory = {

            listAllApps: function () {
              var deferred = $q.defer();
              deferred.resolve(data);
             return deferred.promise;
            }

        }
        return factory;
}]);
于 2013-11-10T08:59:33.500 に答える
1

これは、json に基づく id 値の抽出を示すコードです。

var json = '{"data":[{"id":"files_trashbin","name":"TrashBin","licence":"AGPL","require":"4.9","shipped":"true","active":true},{"id":"files_external","name":"External Storage","licence":"AGPL","require":"4.93","shipped":"true","active":true}],"status":"success"}';
$scope.allapps = JSON.parse(json);
$scope.ids = new Array();
var sourceData = $scope.allapps["data"];
for (var i=0; i<sourceData.length; i++) {
    $scope.ids.push(sourceData[i].id);
}

これは、Angular と統合されたこの抽出の例を示す jsFiddleです。

このコードは、サービスから返された JSON が表示されたものと同じであることを前提としています。注意してください - 最初は、JSON テキストに余分なコンマがいくつかありました (後で修正しました)。これも、表示されていたエラーの原因となっている可能性があります。

于 2013-11-10T08:50:30.200 に答える