Angularjs 1.3 Одноразовая привязка не всегда работает

Глядя на документацию, которую я должен подготовить :: к выражению, и оно должно удалить себя. Чего я не понимаю, так это то, почему это иногда работает, а иногда нет.

Здесь я создал 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
  }

  ...

0 ответов

Другие вопросы по тегам