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()
,但这将导致整个项目的代码无法管理,使问题变得更糟,而不是更好。
解决方案
推荐阅读
- reactjs - 传递数据
- firebase - 如何立即在从相机拍摄的屏幕上显示图像?
- android - 在 android 计费活动上付款成功后没有任何反应
- django - 使用 many=true 时访问 perform_create 中的对象
- javascript - 访问 DOM 元素反应 JS
- angular - 由于在 Angular 6 中找不到标头而导致的 CrossOrigin 错误
- x++ - 可选参数可为空
- ios - Apple Watch 应用程序的二进制大小
- angular - 带有子路由和导航栏的 Angular 模块
- java - 使用 Mockito2.7 模拟本地范围对象的方法