Возьмите этот код:Должен ли я использовать функцию с угловым ng-отключенным?
var app = angular.module('test', []);
app.controller("controller", function() {
this.hello = "Hello world";
this.condition1 = true;
this.condition2 = true;
this.check_condition2 = function() {
return this.condition2;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test" ng-controller="controller as ctrl">
{{ctrl.hello}}
<br>
<label>
<input type="checkbox" ng-model="ctrl.condition2">Condition2</label>
<br>
<button ng-disabled="ctrl.condition1 && ctrl.check_condition2()">My BTN</button>
</div>
Я предполагаю, что угловые работы, как это:
Угловые whatches свойства контроллера, как Condition1.
Он читает директивы ng- и прикрепляет их к объектам . Так, если, например, ng-disabled зависит от condition1, , директива оценивается каждый раз, когда условие 1 изменяет значение.
Теперь снова возьмите образец. Он использует 2 условия, но второй не является атрибутом, это функция. Итак, как Angular может узнать, что что-то, что функция возвращается, меняется?
Одно из условий заключается в том, что угловой оценивает все его директивы каждый раз, когда что-либо, связанное с ними или нет, изменяется на модели, но это не очень хорошо для производительности.
Итак, кто-нибудь знает, как Угловая затухает это неуправляемое выражение exg и я должен использовать функцию в этом контексте или нет?
ASAIK оценивает функцию и сравнивает результат. Итак, пока функция довольно дешевая для выполнения (нет вызовов асинхронной связи и т. Д.), Тогда это должно быть хорошо. –
Глядя на ng-disabled docs, он говорит: Эта директива устанавливает атрибут disabled для элемента, если выражение внутри ngDisabled оценивается как правдивое. Таким образом, он оценивает выражение, так что будет включать возвращаемое значение из функции. – rrd