我有一个Angular.js指令,需要隔离范围以及对$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'会根据传递给指令属性的数据而改变。否则我会坚持上面的工作示例。
感谢任何帮助。谢谢。
答案 0 :(得分:4)
您可以为指令设置HTML,如:
<div mydirective="contractData.People.loading"></div>
在指令本身内,创建一个与loading
属性
scope: {
isLoading: '=mydirective'
},
// rest of directive
这将在指令的本地作用域上创建一个绑定到属性表达式的属性。然后,您可以在指令的模板中引用该scope属性,如:
template: '<span ng-show="isLoading">loading</span>'