Angularjs 1.3一次绑定并不总是有效

时间:2014-09-04 06:12:14

标签: angularjs data-binding bindonce

查看文档我应该将::添加到表达式中,它应该自行删除。我不知道的是为什么它有时会起作用,有时候却没有。

我创建了Plunker here,80%的时间会运行所有正确的oneTime $$ watchListener表达式(按钮不起作用)。

但有时在以完整模式启动预览时,它不会触发,按钮会更改值。

我发布这个是因为我刚刚升级,并且使用下面的代码在我的开发环境中100%失败

<div class="user-location">
  <span ng-if="::get.edit">
    <span ng-if="::user.postal">
      <span ng-bind="::user.postal"></span>
    </span>
    <span ng-if="::!user.postal">
      <span>No postal</span>
    </span>
    Edit
  </span>
  <span ng-if="::!get.edit">
    <span ng-bind="::user.postal"></span>
  </span>
</div>

其他人是否有这个问题,或者知道触发它的确定方法?

查看代码:

// https://code.angularjs.org/1.3.0-beta.19/angular.js line 11404
if (!parsedExpression) {
  if (exp.charAt(0) === ':' && exp.charAt(1) === ':') { // Expressions get through here
    oneTime = true;
    exp = exp.substring(2);
  }

  ...

  if (parsedExpression.constant) {
    parsedExpression.$$watchDelegate = constantWatchDelegate;
  } else if (oneTime) {
    parsedExpression.$$watchDelegate = parsedExpression.literal ? // Get through here as well but the
      oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;         // $$watchDelegate method never gets called
  }

  ...

0 个答案:

没有答案