美元范围.父母.messageContent=值没有从指令更新父作用域

scope.$parent.messageContent= value not updating the parent scope from directive

本文关键字:指令 更新 作用域 父母 范围 messageContent 美元      更新时间:2023-09-26

我可以发誓我有这个工作早些时候,但现在我只是不能得到父作用域更新和显示在页面上。

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

$scope.messageContent = 'The initial content';

在父视图中显示

{{$scope.messageContent}}

我做了一个非常简单的测试,这里是指令。在指令中的链接函数中,我有以下代码:

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

它不会更新父元素。我遗漏了什么?

谢谢

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

更好的选择是使用对象。

控制器

:

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

指令

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

使用对象而不是原语来解决解析问题是由于JavaScript的原型继承。
要了解详细的答案,请参阅:AngularJS中作用域原型/原型继承的细微差别是什么?