AngularJS范围未在指令中更新

问题描述 投票:3回答:1

我有一个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'会发生变化,具体取决于传递到指令属性中的数据。否则,我只会坚持上面的工作示例。

感谢您的帮助。谢谢。

javascript html angularjs angularjs-directive angularjs-scope
1个回答
4
投票

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

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

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

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

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

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

Here is a fiddle

© www.soinside.com 2019 - 2024. All rights reserved.