我试图从子控制器访问/修改父控制器中的某些变量。这个变量是一个promise(一些$ http请求)所以当我渲染子控制器中的元素时,这个变量仍然不存在。
我意识到使用ng-if可以帮助我解决这个问题。但是这两个范围无法沟通。我的问题是:
答案 0 :(得分:2)
最佳做法是创建一个可以在控制器之间共享的服务(使用单例模式)。
答案 1 :(得分:1)
最简单的方法是在子控制器中使用$ scope。$ watch来等待父控制器中ajax回调的任何变量值更改。在$ scope。$ watch回调中,您可以根据需要更改变量值。
答案 2 :(得分:1)
你会使用广播让儿童管理员知道价值是否有所改变。然后,您将在子控制器中监听它并做必要的事情。请参阅下面的示例代码
.controller('MyController',
function($scope, $interpolate, $timeout) {
//$scope.sssss = {};
$scope.$watch('sssss.a', function() {
$scope.$broadcast('valueChanged', $scope.sssss)
});
$timeout(function() {
$scope.sssss = {
a: '12345'
};
}, 2000);
})
.controller('MyChildController',
function($scope, $interpolate, $timeout) {
$scope.$on('valueChanged', function(event, value) {
$scope.ttttt = value.a + '123';
});
});