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>

我需要能够在我的指令中设置一个范围变量,因为“人”会根据传递给指令属性的数据而改变。否则我会坚持上面的工作示例。

任何帮助表示赞赏。谢谢你。

4

1 回答 1

4

您可以为指令设置 HTML,例如:

<div mydirective="contractData.People.loading"></div>

并在指令本身内,创建一个隔离范围绑定到loading属性

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

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

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

这是一个小提琴

于 2013-06-08T19:38:17.240 回答