Angular.js范围不在指令中更新

时间:2013-06-08 19:05:08

标签: angularjs angularjs-directive angularjs-scope

我有一个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'会根据传递给指令属性的数据而改变。否则我会坚持上面的工作示例。

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:4)

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

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

在指令本身内,创建一个与loading属性

绑定的隔离范围
scope: {
    isLoading: '=mydirective'
},
// rest of directive

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

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

Here is a fiddle