【问题标题】:$http request in controller?控制器中的 $http 请求?
【发布时间】:2014-10-29 06:18:11
【问题描述】:

我的印象是,所有与数据相关的请求都必须委托给服务/工厂。但是阅读 $http 实现的示例met 不是一次将它们放在控制器内部,例如:

var app = angular.module("MyApp", []);

app.controller("PostsCtrl", function($scope, $http) {
  $http.get('data/posts.json').
    success(function(data, status, headers, config) {
      $scope.posts = data;
    }).
    error(function(data, status, headers, config) {
      // log error
    });
});

这被认为是正常的做法/模式还是只是为了举例?

【问题讨论】:

  • 作为一种好的设计模式,最好在服务/工厂中使用 $http。使用 $resource 而不是 $http
  • 这里只是示例如何使用 $http。但是对于编码,大多数人在服务中使用每个逻辑事务、检索等。控制器应该只作为视图和服务之间的信使。
  • 甜蜜!谢谢,伙计们!

标签: javascript angularjs oop design-patterns


【解决方案1】:

因此最佳实践取决于项目特定的上下文,主要是应用程序的整体代码大小,但也包括团队规模、项目/参与度等。对于只有几百行代码的小型实用程序,创建封装一次 $http 使用的服务是过度工程。它使您的项目更难阅读和维护,而不是更容易。但是,对于具有许多模块、数十个文件、数千行代码的全尺寸应用程序,可能需要跨多个控制器重用相同的服务逻辑,那么是的,将您的 $http 代码移动到可以独立封装、共享和测试的服务。所以,对于“普通”应用程序(中型或大型),在控制器中使用$http 不被视为最佳实践模式。但是,对于一个有启发性的示例/演示代码 sn-p,或者一个非常琐碎的项目,这很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多