javascript - scope.$parent.messageContent=值不更新指令的父范围

标签 javascript angularjs

我本可以发誓我之前已经做到了这一点,但现在我只是无法让父范围更新并显示在页面上。

在父级中,我有一些想要从指令更新的简单范围。 在父 Controller 中我这样设置。

$scope.messageContent = 'The initial content';

在父 View 中我将其显示

{{$scope.messageContent}}

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

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

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

谢谢

最佳答案

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

更好的选择是使用对象。

Controller :

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

指令

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

由于 JavaScript 的原型(prototype)继承,使用对象而不是原语来解决解析问题是可行的。
有关详细答案 - 请参阅:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?

关于javascript - scope.$parent.messageContent=值不更新指令的父范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512097/

相关文章:

Javascript Nodejs 值未插入数组

javascript - 如何使 Angular uib-typeahead 在绑定(bind)模型后立即显示建议?

javascript - 从一个非常快速地解决 promise 的函数返回 Angular promise

javascript - AngularJS:未从指令调用 ngChange

angularjs - 如何使用 Ionic 将照片分享到 Instagram

javascript - 使用按钮创建 HTML 元素

javascript - 条件 : input:checked with the same class

javascript - 如何将此 javascript 转换为 jQuery

javascript - CodeIgniter Javascript 表单提交

javascript - 在 id div 中找到所有复选框并选中并隐藏其他未选中的