【问题标题】:AngularJS scope not updating in directiveAngularJS范围未在指令中更新
【发布时间】:2013-06-04 20:49:49
【问题描述】:

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

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

感谢任何帮助。谢谢。

【问题讨论】:

    标签: javascript html angularjs angularjs-directive angularjs-scope


    【解决方案1】:

    您可以为指令设置 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

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      相关资源
      最近更新 更多