scope。$ parent.messageContent = value不从指令更新父作用域

时间:2016-11-09 16:49:59

标签: javascript angularjs

我可以发誓我之前有这个工作,但现在我无法让父作用域更新并显示在页面上。

在父级中我有一个简单的范围,我想从指令更新。 在父控制器中,我这样设置它。

$scope.messageContent = 'The initial content';

在父视图中,我显示了

{{$scope.messageContent}}

我让测试非常简单,这是指令。在我的指令链接函数中,我有这段代码:

link: function (scope, element, attrs) {
    scope.$parent.messageContent = 'New content';
}

它根本不会更新父级。我在这里缺少什么?

由于

1 个答案:

答案 0 :(得分:0)

你可能有一个ng-if或另一个Angular指令(ng-repeat,ng-switch,...)来创建一个新的范围,所以你必须用更多的$parent向上链声明。

更好的选择是使用对象。

<强>控制器

$scope.message = {content: 'some content'};

<强>指令

link: function (scope, element, attrs) {
    scope.message.content = 'New content';
}

由于JavaScript的原型继承,使用对象而不是基元来解决分辨率问题 有关详细答案 - 请参阅:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?