0

ファクトリを使用して「JSON」ファイルからアイテムのリストを取得する単純な Angular アプリがあります。最終的にこれはデータベースに接続されますが、今のところ、静的ファイルからプルすることから始めています。JSON ファイルには、項目の配列が含まれています。約束がコントローラーに返された後、工場内のデータへの参照を取得する方法を本当に理解しようとしています。

私の工場は次のように設定されています。

angular.module("myApp").factory("ServiceTypeFactory", ['$http', 関数 ($http ) {

return {
    ServiceTypes: function () {
        return $http.get('json/servicetypes.json').success
        (
            function (data) {
               return data;
            });
    },



    find: function (id) {
      return  _.findWhere(data, {ID:id}); // Not sure how to get access to the data
    }
}

}]);

これはうまく機能し、複数のコントローラーでファクトリーを共有できます。私が見逃している部分は、json ファイルから特定の配列項目を参照し、コントローラーで更新する方法です。実際のデータへの参照を取得する方法に従っていないため、あるコントローラーでアイテムを変更すると、変更が別のコントローラーに反映されます。

両方のコントローラーに、最初にデータへの参照を取得するための次のコードがあります。

var popService = function (data) {
        $scope.ServiceTypes = data;
    }

    // IF at ANY time the Service Types have not been loaded we will populate them.

    if (typeof $scope.ServiceTypes === "undefined") {
        ServiceTypeFactory.ServiceTypes().success(popService); 
    }

私の理解では、 $scope.ServiceTypes には実際にデータへの参照があります。関数で工場に戻って、データの実際の単一ソースにアクセスするにはどうすればよいですか。ファクトリが関数とオブジェクトを含むデータを返すことはわかりましたが、ファクトリでこのデータを参照して操作する方法がありません。将来的には、当面は CRUD 操作を実行したいと思います。仕組みを理解しようとしています。

私の JSON ファイルは次のようになります。

 {
    "serviceTypes": [
        {
            "ID": "1001",
            "ServiceTypeName": "111111",
            "Description": "aaaaaaa"
        },
        {
            "ID": "1002",
            "ServiceTypeName": "222222",
            "Description": "bbbbbbb"
        },
        {
            "ID": "1003",
            "ServiceTypeName": "3333333",
            "Description": "ccccccc"
        },
        {
            "ID": "1004",
            "ServiceTypeName": "444444",
            "Description": "dddddddd"
        },
        {
            "ID": "1005",
            "ServiceTypeName": "5555555",
            "Description": "eeeeeee"
        }
    ]
}
4

1 に答える 1

0

コードを少しクリーンアップする必要がありました。Egghead.ioでいくつかの簡単な例を見ると、それが明確になりました。

于 2014-03-24T14:33:03.550 に答える