我想将表达式绑定到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" />
如果我执行后者,则当控制器求值时,表达式仅求值一次。有办法吗?
答案 0 :(得分:1)
如果您将它放在一个地方并且表达真的很奇怪,我建议您使用方法:
<button ng-disabled="$ctrl.isValid()" />
如果您需要在一个模板中进行多次操作-那么$watch
var vm = this;
$scope.$watch('$ctrl.form.$valid && $ctrl.foo && $ctrl.bar && $ctrl.goo', (val) => {
vm.isValid = val;
});
但是最好不要将这样的观察者链接起来。