在Angular中存储和访问数据对象的最佳实践

时间:2014-07-11 11:54:27

标签: angularjs

我有一个返回对象列表的json端点。第一个视图是一个只包含一些基本信息的列表,但如果您选择一个项目,我想显示更多详细信息。我应该在我的工厂中构建和反对并有另一种方法来获取细节吗?所以

getItems() // returns list data
getItem(id)// goes through the object already retrieved and returns just the data?

我不想再为每个项目点击服务器,但我不确定在Angular中执行此操作的最佳方法。在Angular中不会出现模型。

此外,假设Item有额外的信息,我可能需要另外的服务器请求。什么是在本地存储这个的最佳方式,所以如果我已经提取这些细节,我不需要再次获取它?

2 个答案:

答案 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>仅作为常规函数调用。