我想知道angularJS app中哪个更好。
在html中,我可以......
A)
<span ng-class="{'car-icon': category === 'CAR' || category === 'SUV','bus-icon': category === 'BUS','bike-icon': category === 'BIKE'}"</span>
...或
b)中
<span ng-class="categoryIcon"></span>
其中categoryIcon在控制器函数中设置。
我的偏好是b)。 a)将逻辑放在我不喜欢的UI中。我也发现测试控制器功能要容易得多,因此b)
的另一个原因然而,我被告知a)是要走的路,因为这就是angularJS模板的用途。这个例子是应用CSS样式但是我得到了设置href的相同推理,需要一些简单的逻辑,并且我被要求在HTML模板和控制器函数中进行。
答案 0 :(得分:1)
这是一个偏好的问题,但我更喜欢选项b)
<span ng-class="categoryIcon">
在控制器中设置了categoryIcon
。
如果您提前考虑,如果添加新类别会导致html变得冗长,丑陋并且容易出错。此外,如果您希望将来在html中的多个位置使用categoryIcon
,该怎么办?简单地引用ng-class="categoryIcon"
比将选项a)复制到多个地方要好得多。
答案 1 :(得分:1)
我不知道为什么这里的其他答案被投了票,因为这是对最佳做法的看法,没有具体的正确/错误答案,但我更倾向于在一次性使用中使用解决方案A,以及解决方案暗示B必须在视图中重复。
我倾向于认为视图应该能够在其认为合适时处理数据模型。我们在这里讨论的并不是真正的业务逻辑,我不想跳到控制器代码中来查看正在传递的类。
如果你在整个地方都在使用这个条件,那么至少在控制器中创建一些便利方法肯定是有意义的:isCarSuv(),isBus()等。然后ng-class条件块会更干净。
<span ng-class="{'car-icon': isCarSuv(),'bus-icon': isBus(),'bike-icon': isBike()}">
我真的不认为纯粹的B风格实现是我的方式。
只是我的两分钱。其他人肯定不同意。
答案 2 :(得分:0)
我总是使用这种变体,因为它更清洁,但我想这是从开发人员到开发人员的不同
<span ng-class="categoryIcon">