gpt4 book ai didi

javascript - AngularJS 范围未在指令中更新

转载 作者:行者123 更新时间:2023-12-01 16:09:14 25 4
gpt4 key购买 nike

我有一个 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>

并且在指令本身中,创建一个绑定(bind)到 loading 属性的隔离作用域

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

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

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

Here is a fiddle

关于javascript - AngularJS 范围未在指令中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com