在angularjs

时间:2016-09-28 09:11:34

标签: angularjs

  1. 在服务中使用getter和setter,稍后调用服务并获取值
  2. $ Broadcast和$ emit
  3. 哪种是最佳做法?为什么?

2 个答案:

答案 0 :(得分:0)

如果您的要求是针对整个应用程序,那么选择$ broadcost和$ emit, 如果它只是在两个或三个控制器或视图之间更好的去服务,工厂,$ rootScopes

答案 1 :(得分:0)

让我们假设您在Controller1在范围内时将数据存储在服务中。 然后导航到另一个页面,意味着Controller1超出范围,新的Controller2进入范围。如果您想访问Controller2中之前存储的数据,可以通过调用服务轻松获取。

如果您使用$broadcast$emit,则只有在Controller1Controller2之间共享数据的方式才是您注册$broadcast$emit $rootScope上的活动。如果你向$rootscope添加太多东西,那么你就是在污染它,这不是一件好事。但是,如果你使用的时间非常有限,那么可能就好了。

这也可能有所帮助 https://egghead.io/lessons/angularjs-sharing-data-between-controllers

如果您只想跨应用程序存储数据访问,您还可以缓存数据 https://docs.angularjs.org/api/ng/type/ $ cacheFactory.Cache

angular.module('superCache')
  .factory('superCache', ['$cacheFactory', function($cacheFactory) {
    return $cacheFactory('super-cache');
}]);
angular.module("module1", [])
.controller("controller1", function(superCache){
 superCache.put('key', 'value');
 superCache.put('another key', {});
})
 angular.module("module2", [])
.controller("controller2", function(superCache){
 $scope.data1 =  superCache.get('key');
 $scope.obj1 = superCache.put('another key');
})