我有一个$ cope用于另一个控制器。所以我用$ broadcast事件来分享我的价值。该方法工作正常,我可以将值分配给$ broadcast变量,该变量是$ broadcast。但问题来自她。我无法在$ on事件之外绑定或访问$ scope的指定值。
修改1:
我有同一组事件在同一个模块中正常工作。但是这个没有。
app.controller('ctrl0',function($scope,$rootScope) {
$rootScope.$broadcast($state.current.controller, { stateValue: $scope.data });
});
app.controller('ctrl1',function($scope,$rootScope) {
$rootScope.$on($state.current.controller, function (event, args) {
// This $scope binds in my view
$scope.mylabel = args.data;
});
$rootScope.$broadcast('myvariable', { search: $scope.searchvalue });
});
app.controller('ctrl2',function($scope,$rootScope) {
$rootScope.$on('myvariable', function (event, args) {
$scope.localscope = args.search;
/* This prints the value in the console.
This does not bind in my view. */
console.log($scope.localscope);
});
// This prints undefined in the console
console.log($scope.localscope);
});
我也试过使用$ apply()函数,但我没有得到结果。
答案 0 :(得分:0)
当控制器启动时出现问题,但尚未声明您在$ on中分配的变量,并且它的值尚未更改,因此这将修复&#39 ;错误':
app.controller('ctrl2', function($scope, $rootScope) {
$scope.localscope = null;
$rootScope.$on('myvariable', function (event, args) {
$scope.localscope = args.search;
console.log($scope.localscope); // This prints the value in the console
});
console.log($scope.localscope); // should print 'null'
});
所以现在当你打印出第二个console.log时,它不会被定义,它将是' null'。如果事件现在发生,它仍然会按照您的想象设置该变量,并将其记录到控制台。