我有一个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>
并且在指令本身内,创建一个绑定到loading
属性的隔离范围
scope: {
isLoading: '=mydirective'
},
// rest of directive
这将在指令的本地范围内创建绑定到属性表达式的属性。然后,您可以在指令的模板中引用该范围属性,例如:
template: '<span ng-show="isLoading">loading</span>'