ng-repeat没有更新rootScope更改

时间:2015-06-08 16:22:42

标签: angularjs

我有以下static,但由于某种原因,我在更新ng-repeat

时无法更新ng-disabled
$root.currentUser.LinkedLogins

我确定在更新rootScope后发生了摘要周期,为什么没有禁用ng更新?

2 个答案:

答案 0 :(得分:1)

使用angular指令,您不需要双花括号 - 这些主要用于指令之外的数据绑定。

试试这个:

 <button ng-repeat="providerName in externalProviders track by $index"               
         ng-disabled="$root.currentUser.LinkedLogins.indexOf(providerName) > -1">

答案 1 :(得分:1)

不要在ng-disabled表达式内插,因为它需要表达式。

只是做:

ng-disabled="$root.currentUser.LinkedLogins.indexOf(providerName) > -1"

{{expn}} ==&gt;表达式的值

在您的情况下,您将设置字符串值(true / false)为ng-disabled说true/false,它将根据值设置按钮的初始状态。但是,为了跟踪后续更新,它将在范围上设置一个名为true/false的属性监视(显然不存在)。

From source

//Here attr[normalized] will be true or false in your case
scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
   attr.$set(attrName, !!value);
});

备注:我不确定您指的是$root,如果更新了rootscope属性LinkedLogins的属性currentUser,您应该会在子范围内看到更新因为currentUser由任何子范围(非隔离)原型继承:

 ng-disabled="currentUser.LinkedLogins.indexOf(providerName) > -1"