如果不在控制器中,我应该在哪里放置ngClass逻辑?

时间:2014-07-22 14:13:15

标签: angularjs

我有一个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>

1 个答案:

答案 0 :(得分:2)

在我看来,在控制器中拥有(冗长而复杂)与视图相关的东西,以保持视图无杂乱,这完全没问题。

我会在范围内拥有专门用于此目的的模型属性。这样可以保持逻辑上的所有内容:

$scope.myModel = {
    view: {
        // all view-related stuff goes here
    },
    ...
}

如果您仍希望将其保留在视图中,请使用ng-init

<div ng-init="statusClassMap = {...};">