Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 共享双作用域数据 短版:_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 共享双作用域数据 短版:

Javascript 共享双作用域数据 短版:,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我正在构建一个至少有5个作用域的angular应用程序 我想在他们之间共享数据,我正在寻找最好的方法 而不是转到$parent。$parent 长版本: 我有一个控制器,它包含多个指令(每个指令都包含新的$scope),从控制器代码我可以使用ng modal在视图中访问我的变量,但是如果我希望所有变量都可以从正确的控制器访问,我需要访问$parent.$parent.$parent scope 我相信有更好的办法。 谢谢您需要将所有数据存储在服务中 样本: 控制器之间的共享数据可以放在$root

我正在构建一个至少有5个作用域的angular应用程序 我想在他们之间共享数据,我正在寻找最好的方法 而不是转到$parent。$parent

长版本: 我有一个控制器,它包含多个指令(每个指令都包含新的$scope),从控制器代码我可以使用ng modal在视图中访问我的变量,但是如果我希望所有变量都可以从正确的控制器访问,我需要访问$parent.$parent.$parent scope

我相信有更好的办法。
谢谢

您需要将所有数据存储在
服务中
样本:


控制器之间的共享数据可以放在$rootScope上,所有控制器都可以使用。您可以直接注入$rootScope并对其进行设置


但是,要在控制器之间实现持久性,您必须使用服务或工厂。

使用服务共享数据。Aggreed With@Gustav,服务是最好的且易于管理的。您的意思是在控制器之间共享数据,对吗?如果您知道,请阅读相关内容,尝试@Maher no我是说$scopes。好的,但是,如果我的数据将存储在控制器中,我仍然必须到达作用域内的该控制器,并且我仍然必须到达$parent.$parent.$parent排序后,您可以更新服务中的数据或从排序后的数据创建新变量,并且必须与她一起工作。我希望在两个作用域之间共享数据,从我所读到的内容来看,将变量放入$rootScope并不是解决它的最佳方法。谢谢
angular.
module('myServiceModule', []).
 factory('notify', [function () {
   var data = {};
   return : {
     getData : function(){ return data;}
   },
   setData : function(item){
    data = item
   }
 }]).
controller('myCtrl', ['$scope', 'notify', function($scope, notify) {
   $scope.someData = notify.getData();
   $scope.doSomething = function(someObj){
     notify.setData(someObj)
   }
 }]);