我有一个简单的 Angular 应用程序,它使用工厂从“JSON”文件中提取项目列表。最终这将连接到数据库,但现在我只是从静态文件中提取。JSON 文件包含一组项目。我真的很想了解在承诺返回给控制器后如何在工厂中获取对我的数据的引用。
我的工厂设置如下:
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"
}
]
}