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

Angularjs 如果不在控制器中,我应该将ngClass逻辑放在哪里?,angularjs,Angularjs,我有一个value->class查找,用于将属性的值映射到给定的CSS类 我不希望这个逻辑内联,所以目前它在控制器中,这使得代码非常简单。但是,这违反了控制器中没有UI逻辑的原则。那么,在保持代码干净的同时,我还能把它放在哪里呢 这就是我目前拥有的: 控制器: app.controller('MyController', function ($scope) { var statusClassMap = { 'PausePending': 'label label-def

我有一个
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;
});
视图:

{{service.Status}

在我看来,在控制器中包含(冗长而复杂的)与视图相关的内容,以保持视图不杂乱,这是非常好的

我会有一个专门用于此目的的范围内的模型属性。这将使所有内容保持逻辑分组:

$scope.myModel = {
    view: {
        // all view-related stuff goes here
    },
    ...
}
如果仍希望将其保留在视图中,请使用
ng init

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

事实上,这就是我现在的评论。这种行为逻辑旨在与
ng类
指令一起使用。OP引用的原则更多地与服务器端的标准MVC模式相关,而AngularJS是一种客户端MVC。
<div ng-init="statusClassMap = {...};">