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 = {...};">