我可以发誓我有这个工作早些时候,但现在我只是不能得到父作用域更新和显示在页面上。
在父我有一些简单的范围,我想从指令更新。在父控制器中,我是这样设置的。
$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中作用域原型/原型继承的细微差别是什么?