angularjs Angular 父子控制器通信

f4t66c6m  于 2022-10-31  发布在  Angular
关注(0)|答案(3)|浏览(189)

我试图从子控制器访问/修改父控制器中的某个变量。这个变量是一个承诺(某个$http请求),所以当我在子控制器中呈现元素时,这个变量仍然不存在。
我意识到使用ng-if可以帮助我解决这个问题。但是两个范围不能通信。我的问题是:
1.如何在2作用域中双向绑定变量?这是正确的方法吗?
1.有什么方法可以不使用ng-if吗?我有2-3个promise变量,我不想在一个元素中使用多个ng-if语句。这可能吗?
http://jsbin.com/rahidukuvi/1/edit

siotufzp

siotufzp1#

最佳实践是创建一个可以在控制器之间共享的服务(使用单例模式)。

webghufk

webghufk2#

最简单的方法是在子控制器中使用$scope.$watch来等待父控制器中 AJAX 回调时的任何变量值更改。在子控制器中的$scope.$watch回调中,您可以根据需要更改变量值。

hc2pp10m

hc2pp10m3#

你可以使用广播让子控制器知道值改变了。然后你可以在子控制器中监听并做必要的事情。参见下面的示例代码

.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';
        });

    });

相关问题