Javascript 在我的例子中,如何将数据从一个控制器传递到另一个控制器
我正试图使用Javascript 在我的例子中,如何将数据从一个控制器传递到另一个控制器,javascript,html,angularjs,Javascript,Html,Angularjs,我正试图使用状态提供程序将数据传递到控制器中 我有类似的东西 app.js $stateProvider .state('test', { url: '/te', views: { '': { templateUrl: 'test.html', controller: 'testCtrl'
状态提供程序
将数据传递到控制器中
我有类似的东西
app.js
$stateProvider
.state('test', {
url: '/te',
views: {
'': {
templateUrl: 'test.html',
controller: 'testCtrl'
},
data:{
testValue:true
}
}
})
我的控制器:
app.controller('mainTestCtrl', function($scope) {
//I need to be able to get the testValue from here.
})
app.controller('testCtrl', function($scope, $state) {
var testValue = $state.current.views.data.testValue;
})
我无法真正为
mainTestCtrl
提供状态提供程序,因为只有在调用testCtrl
时,我才需要testValue为true
。我需要一种将testValue传递给mainTestCtrl的方法。有办法做到这一点吗?谢谢。如果两个控制器具有相同的级别(a.e不是父子),则可以使用$rootScope.$broadcast
演示1
当心
在发送$broadcast
之前,确保第二个控制器已初始化。否则没人会听
但我会使用存储
testValue
的服务,每个控制器都可以取回它:
演示2在实例化
testCtrl
的地方,mainTestCtrl
本身是否已实例化?@Marc yes mainTestCtrl将在testCtrl之前实例化为什么父子关系不允许使用$rootScope.$broadcast
?@MarcKline for me,在$rootScope
下频繁使用$broadcast
是不好的风格。在父子关系的情况下,家长使用自己的作用域发送广播,但不使用$rootScope
我明白了。。。我以为你说这是不可能的(我会反对的)。我猜你只是说你不会推荐它。顺便说一句,如果该服务只对这一个值是必需的,那么值服务会更简洁: