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
}
...