【问题标题】:AngularJS referencing parent controllerAngularJS 引用父控制器
【发布时间】:2013-04-19 11:17:43
【问题描述】:

我正在尝试实现以下行为。我正在使用 ng-inculde 包含一个模板,我正在做这样的事情:{{something}}

我希望 'something' 与父控制器作用域中的另一个变量进行双重绑定,并能够设置父控制器作用域的属性名称。因此,在一个包含中,某些内容将引用一个苹果,而在另一个包含中,某些内容将引用一个橙色。

我所做的是,我编写了一个自定义控制器,它有一个lookAt(v) 方法,我在我使用 ng-include 和 ng-controller 的 div 的 ng-init 中调用此方法。在这种方法中,我试图设置绑定但它不起作用。我假设,父范围已经定义了该变量。

这是我的代码:

mod.controller('FooController', ['$scope', function($scope) {
    $scope.lookAt = function (variable) {
        $scope.something=$scope[variable];
    }
}]);

感谢您提供有关如何解决此问题的任何建议。

【问题讨论】:

  • 你能提供一个jsfiddle吗?如果我理解正确,你想实现一个观察者模式。在 AngularJS 中,您可以为此使用 $watch。

标签: angularjs angularjs-scope


【解决方案1】:

在使用 ng-include 引入的模板中,使用 something() 代替 {{something}},其中 something 方法在父控制器上定义。

如果你愿意,你仍然可以初始化你的变量名:

mod.controller('FooController', ['$scope', function($scope) {
    $scope.initMethod = function(variable) {
       $scope.variable = variable;
    }
    $scope.something = function () {
        return $scope[$scope.variable];
    }
}]);

【讨论】:

    【解决方案2】:

    当使用控制器作为语法时,您不能只在消费者(子构造器)中执行$scope.$parent,您需要像这样处理父数据对象:$scope.$parent.vmParent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2023-03-10
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多