AngularJS指令中作用域未更新

3
我有一个AngularJS指令,需要独立作用域和访问$parent作用域。父级作用域中的数据在ajax调用完成后会发生更改。
在我的指令链接功能中,我有:
scope.loading = scope.$parent.contractData.People.loading;

但是当父级的contractData值改变时,scope.loading并没有更新。我甚至尝试使用scope.$watch,但它也没有被通知到这个变化。

在我的指令模板中,我正在使用ng-show。以下模板按预期工作:

<span ng-show="$parent.contractData.People.loading">loading</span>

但是这样做是不起作用的(因为范围区域永远无法知道数据的更改):
<span ng-show="loading">loading</span>

我需要在我的指令中设置一个作用域变量,因为“People”会根据传递到指令属性中的数据而改变。否则,我就会坚持上面工作的例子。

任何帮助都将不胜感激。谢谢。

1个回答

4
您可以设置指令的HTML如下:
<div mydirective="contractData.People.loading"></div>

在指令内部,创建一个隔离作用域绑定到loading属性。

scope: {
    isLoading: '=mydirective'
},
// rest of directive

这将在指令的本地作用域上创建一个属性,该属性绑定到属性表达式。然后您可以在指令的模板中引用该作用域属性,例如:

template: '<span ng-show="isLoading">loading</span>'

这里有一个代码案例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接