我有一个返回对象列表的json端点。第一个视图是一个只包含一些基本信息的列表,但如果您选择一个项目,我想显示更多详细信息。我应该在我的工厂中构建和反对并有另一种方法来获取细节吗?所以
getItems() // returns list data
getItem(id)// goes through the object already retrieved and returns just the data?
我不想再为每个项目点击服务器,但我不确定在Angular中执行此操作的最佳方法。在Angular中不会出现模型。
此外,假设Item有额外的信息,我可能需要另外的服务器请求。什么是在本地存储这个的最佳方式,所以如果我已经提取这些细节,我不需要再次获取它?
答案 0 :(得分:0)
如果要在两个控制器之间交换数据,可以使用提供程序
App.provider('Data', function() {
//Properties declaration
this.info = '';
//Setters
this.setInfo = function(info) {
this.info = info;
};
//Getters
this.getInfo = function() {
return this.info;
};
控制器1
App.controller(
'controller1',
['$scope', 'Data',
function($scope, Data) { Data.setInfo('here you put what you want') }]);
获取信息的控制器
App.controller(
'controller2',
['$scope', 'Data',
function($scope, Data) { Data.getInfo() }]);
答案 1 :(得分:0)
更有可能的是,您需要使用工厂或服务:
https://docs.angularjs.org/api/auto/service/$provide#factory
https://docs.angularjs.org/api/auto/service/$provide#service
在这两种情况下,您都提供一个Angular将调用一次并存储返回引用的函数,然后将该引用提供给任何请求它的控制器或其他Angular管理对象。工厂和服务之间的区别在于服务函数应该是构造函数(使用“new”关键字调用),而工厂< / strong>仅作为常规函数调用。