Булево значение Bind в Angularjs - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу связать выражение с атрибутом ng-disabled или ng-class и заставить его пересматривать каждый раз, когда изменяются свойства.Если у меня есть выражение в HTML, все это работает, но делает для ужасной читабельности:

<div ng-class="{disabled: $ctrl.form.$valid && $ctrl.foo && $ctrl.bar && $ctrl.goo }" >
  bla bla bla
</div>
<button ng-disabled="$ctrl.form.$valid && $ctrl.foo && $ctrl.bar && $ctrl.goo" />

Я бы предпочел, чтобы в моем определении класса было свойство:

this.isValid = this.form.$valid && this.foo && this.bar && this.goo;

и привязка к этому свойству была бы такой:

<div ng-class="$ctrl.isValid" >
  bla bla bla
</div>
<button ng-disabled="$ctrl.isValid" />

Если я сделаю последнее, выражение вычисляется только один раз, когда вычисляет контроллер.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 18 сентября 2018

Если у вас есть это в одном месте, и выражение действительно странное, я бы предложил использовать метод:

<button ng-disabled="$ctrl.isValid()" />

Если вам нужно это много раз в одном шаблоне - тогда $watch

var vm = this;
$scope.$watch('$ctrl.form.$valid && $ctrl.foo && $ctrl.bar && $ctrl.goo', (val) => {
  vm.isValid = val;
});

Но лучше не цеплять таких наблюдателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...