我们目前正在考虑优化AngularJS视图。目前,视图中通常有很多条件逻辑来确定是否应显示某些内容,例如:
ng-if="(vm.a && vm.b) || vm.c === 'something'"
在视图中具有此条件逻辑并不是很好,而是正在考虑将该逻辑移至控制器。
将这种条件逻辑移出视图并移入控制器(它属于控制器)的最佳方法是什么?
我尝试了以下操作:
我最初尝试在控制器中创建一个新变量:
this.showIt = (this.a && this.b) || this.c === 'something';
然后在视图中引用该变量:
ng-if="vm.showIt"
但是问题在于,this.showIt
不会在条件变化时更新。
然后我尝试将其移至方法:
showIt(){ return (this.a && this.b) || this.c === 'something'; }
然后在视图中调用该方法:
ng-if="vm.showIt()"
但这被执行了很多次。
this.showIt = false;
updateShowIt() { this.showIt = (vm.a && vm.b) || vm.c === 'something'; }
然后,当其中一个变量可能已更改时,调用updateShowIt()
,但这将导致整个项目中难以管理的代码,使问题变得更糟,而不是更好。