Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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_Html_Angularjs - Fatal编程技术网

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
我明白了。。。我以为你说这是不可能的(我会反对的)。我猜你只是说你不会推荐它。顺便说一句,如果该服务只对这一个值是必需的,那么
服务会更简洁: