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

标签 javascript html angularjs angularjs-directive angularjs-scope

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

相关文章:

css - 如何使 <svg> 元素扩展或收缩到其父容器?

html - 使用 codeigniter 将文本置于图像链接下方

javascript - 如何旋转文件 pdf 和所有图像类型

javascript - CryptoJS : key. 钳位不是函数

html - 如何制作带有悬停效果的链接按钮?

javascript - AngularJS 不清理由 ng-include 创建的子作用域

javascript - 如何在使用 $index 时动态定义 ng-model

javascript - AngularJS:在 Controller 之间传递参数

javascript - Three.js 天空盒纹理问题

javascript - 动态为对象分配属性名称