0

查看我应该添加::到表达式前面的文档,它应该会自行删除。我不明白为什么它有时有效,有时无效。

我在这里创建了一个 Plunker,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
  }

  ...
4

0 回答 0