我有一个value -> class
查找,用于将属性的值映射到给定的CSS类。
我不希望这种逻辑内联,所以目前它在控制器中,这使代码非常简单。但是这违反了控制器中没有UI逻辑的原则。那么我还能在保持代码清洁的同时把它放在哪里呢?
这就是我目前所拥有的:
控制器:
app.controller('MyController', function ($scope) {
var statusClassMap = {
'PausePending': 'label label-default',
'Paused': 'label label-primary',
'ContinuePending': 'label label-info',
'StartPending': 'label label-info',
'Running': 'label label-success',
'StopPending': 'label label-warning',
'Stopped': 'label label-danger'
};
$scope.statusClassMap = statusClassMap;
});
查看:
<td><span data-ng-class="statusClassMap[service.Status]">{{service.Status}}</span></td>
答案 0 :(得分:2)
在我看来,在控制器中拥有(冗长而复杂)与视图相关的东西,以保持视图无杂乱,这完全没问题。
我会在范围内拥有专门用于此目的的模型属性。这样可以保持逻辑上的所有内容:
$scope.myModel = {
view: {
// all view-related stuff goes here
},
...
}
如果您仍希望将其保留在视图中,请使用ng-init
:
<div ng-init="statusClassMap = {...};">