我知道最好的做法是让控制器尽可能薄。但是控制器是否可能太薄?例如,下面的代码显示了三种情况:
我知道情况#1是最糟糕的情况。但案例#3是否优于案例#2?
我使用了一个硬编码的" Hello World"简化。实际上,会有业务逻辑返回消息。
var app = angular.module('plunker', []);
// model is inside controller (worst case)
app.controller('controller1', function() {
this.message = 'Hello World';
});
// template accesses model thru controller. (getting thinner)
app.controller('controller2', function(model) {
this.message = model.getMessage();
});
// controller pass model to template. (ultra thin)
app.controller('controller3', function(model) {
this.model = model;
});
app.factory('model', function() {
return {
getMessage: function() {
return 'Hello World'
}
}
});
HTML ...
<body>
<div ng-controller='controller1 as vm1'>{{vm1.message}}</div>
<div ng-controller='controller2 as vm2'>{{vm2.message}}</div>
<div ng-controller='controller3 as vm3'>{{vm3.model.getMessage()}} </div>
</body>
答案 0 :(得分:0)
在这种特殊情况下,你的模型返回静态文本并没有区别。
但想象一下一个经典的数据服务模型,它可以调用api。
最好从控制器内的http调用解析promise,以便管理错误。这一点指向你的情况#2。
希望这有助于澄清情况