我应该重构 angularjs 中 ng-if 的多个条件吗?
Should I refactor multiple conditions on ng-if in angularjs?
我有这段代码,我想知道是否有更好的风格来编写它,以便视图中的逻辑更少。
<span ng-if="status == 'state1' || status == 'state2'">Foobar</span>
<span ng-if="status == 'state3'">Baz</span>
是的,我认为重构是明智的。 你的例子很简单,但很容易想象有更多的条件。 当许多元素具有复杂的显示条件时,我做了这样的事情:
$scope.render = {
foobar: function() {
return $scope.status == 'state1' || $scope.status == 'state2'
},
baz: function() {
return $scope.status == 'state3'
}
}
那么视图中的用法是:
<span ng-if="render.foobar()">Foobar</span>
<span ng-if="render.baz()">Baz</span>
演示:http://plnkr.co/lv4w9dLN8oN0bBF23VKp
这样可以保持视图中的逻辑占用空间较小,并允许您轻松地在多个元素上重用逻辑。
不确定这是否更好,但这里有一个使用 ngSwitch
的选项。 它确实删除了一些逻辑(假设您只有这三种状态):
<div ng-switch on="status">
<span ng-switch-when="state3">Baz</span>
<span ng-switch-default>Foobar</span>
</div>
如果你预计你的内容将来会增长,你可以用模板甚至所谓的条件指令将其包装成指令:链接
相关文章:
- 通过js在新选项卡中有条件地打开url
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- jQuery-有条件地附加HTML
- 根据某些条件在视图之间切换
- 如何做到这一点,使代码在不传递条件后执行函数
- 有条件更新d3.js力图中节点的最佳方法
- JSON重构(合并内容)与javascript
- javascript中的布尔条件
- Woocommerce产品选项有条件
- 基于两个条件退出While循环
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 有条件地在选项标记中应用布尔属性
- 使用javascript以HTML形式验证条件
- 聚合物0.5.5:核心列表中的条件模板和/或模板动态参考
- javascript对象操作:根据指定条件选择属性
- 这个条件语句的逻辑有问题
- 如何“;过滤器”;或者以其他方式重构该数据
- 如何重构我的条件语句
- 重构仅根据条件和返回值进行区分的JavaScript函数
- 我应该重构 angularjs 中 ng-if 的多个条件吗?