首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角父和子控制器通信

角父和子控制器通信
EN

Stack Overflow用户
提问于 2014-12-08 01:12:37
回答 3查看 3.4K关注 0票数 2

我正在尝试从子控制器访问/修改父控制器中的一些变量。这个变量是一个承诺(一些$http请求),所以当我呈现子控制器中的元素时,这个变量仍然不存在。

我意识到使用ng-if可以帮助我解决这个问题。但这两个作用域不能通信。我的问题是:

  1. 如何双向绑定两个作用域中的变量?这是正确的方法吗?
  2. 有什么办法我不需要用这个吗?我有2-3个承诺变量等待在那里,我不想要一个元素中的多个ng-if语句。这个是可能的吗?

http://jsbin.com/rahidukuvi/1/edit

EN

回答 3

Stack Overflow用户

发布于 2014-12-08 06:52:11

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

票数 2
EN

Stack Overflow用户

发布于 2014-12-08 03:08:03

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

票数 1
EN

Stack Overflow用户

发布于 2014-12-08 03:12:15

您可以使用广播来让子控制器知道更改的值。然后,您将在子控制器中听到这一点,并执行必要的操作。见下面的示例代码

代码语言:javascript
复制
    .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';
        });


    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27349932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档