我有一个 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”会根据传递到指令属性中的数据而改变。否则我只会坚持上面的工作示例。
感谢任何帮助。谢谢。
最佳答案
您可以为指令设置 HTML,例如:
<div mydirective="contractData.People.loading"></div>
并且在指令本身中,创建一个绑定(bind)到 loading
属性的隔离作用域
scope: {
isLoading: '=mydirective'
},
// rest of directive
这会在绑定(bind)到属性表达式的指令的本地范围内创建一个属性。然后您可以在指令的模板中引用该范围属性,例如:
template: '<span ng-show="isLoading">loading</span>'
关于javascript - AngularJS 范围未在指令中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002859/