哪种是最佳做法?为什么?
答案 0 :(得分:0)
如果您的要求是针对整个应用程序,那么选择$ broadcost和$ emit, 如果它只是在两个或三个控制器或视图之间更好的去服务,工厂,$ rootScopes
答案 1 :(得分:0)
让我们假设您在Controller1
在范围内时将数据存储在服务中。
然后导航到另一个页面,意味着Controller1
超出范围,新的Controller2
进入范围。如果您想访问Controller2
中之前存储的数据,可以通过调用服务轻松获取。
如果您使用$broadcast
和$emit
,则只有在Controller1
和Controller2
之间共享数据的方式才是您注册$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');
})