处理控制器和数据模型

时间:2016-06-02 15:53:57

标签: angularjs model controller

我知道最好的做法是让控制器尽可能薄。但是控制器是否可能太薄?例如,下面的代码显示了三种情况:

我知道情况#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>

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,你的模型返回静态文本并没有区别。

但想象一下一个经典的数据服务模型,它可以调用api。

最好从控制器内的http调用解析promise,以便管理错误。这一点指向你的情况#2。

希望这有助于澄清情况