首页 文章

Angular Factory Manipulating Data(CRUD)在工厂中具有功能

提问于
浏览
0

我有一个简单的Angular应用程序,它使用工厂从“JSON”文件中提取项目列表 . 最终这将连接到数据库,但现在我开始只是从静态文件中提取 . JSON文件包含一系列项目 . 我真的想了解在将promise发送回控制器之后如何在工厂中获取对数据的引用 .

我的工厂设置如下:

angular.module(“myApp”) . factory(“ServiceTypeFactory”,['$ http',function($ 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"
        }
    ]
}

1 回答

  • 0

    只需要稍微清理一下代码 . 在egghead.io上观看几个简单的例子就清楚了 .

相关问题