将条件视图逻辑移至控制器方法

时间:2018-12-05 09:47:32

标签: angularjs

我们目前正在考虑优化AngularJS视图。目前,视图中通常有很多条件逻辑来确定是否应显示某些内容,例如:

ng-if="(vm.a && vm.b) || vm.c === 'something'"

在视图中具有此条件逻辑并不是很好,而是正在考虑将该逻辑移至控制器。

将这种条件逻辑移出视图并移入控制器(它属于控制器)的最佳方法是什么?

我尝试了以下操作:

1。尝试使用变量

我最初尝试在控制器中创建一个新变量:

this.showIt = (this.a && this.b) || this.c === 'something';

然后在视图中引用该变量:

ng-if="vm.showIt"

但是问题在于,this.showIt不会在条件变化时更新。

2。尝试使用方法

然后我尝试将其移至方法:

showIt(){ return (this.a && this.b) || this.c === 'something'; }

然后在视图中调用该方法:

ng-if="vm.showIt()"

但这被执行了很多次。

3。考虑更改时调用的方法

this.showIt = false;
updateShowIt() { this.showIt = (vm.a && vm.b) || vm.c === 'something'; } 

然后,当其中一个变量可能已更改时,调用updateShowIt(),但这将导致整个项目中难以管理的代码,使问题变得更糟,而不是更好。

0 个答案:

没有答案