angularJS应用程序中简单逻辑的位置

时间:2015-04-16 14:20:47

标签: angularjs

我想知道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模板和控制器函数中进行。

3 个答案:

答案 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">