业务逻辑在哪里?angularjs?

ash*_*man 11 angularjs

让我们说点击一个按钮(在视图中),要求是:从服务器获取数据.我是否对业务逻辑感到困惑

i)获取数据和

ii)验证应在控制器内部或工厂内(或服务部门)进行

它应该放在工厂还是控制器中?请帮忙!!

Wot*_*els 14

控制器的目的是将数据绑定到您的视图.它们不应包含任何逻辑,只能与您的服务进行通信.

homeModule.controller('homeCtrl',function($scope,Categories){
  $scope.categories = Categories.items;
});
Run Code Online (Sandbox Code Playgroud)

向服务添加一个获取数据并将其存储在自身上的函数:

fetchAll: function(){

  var defer = $q.defer();
  var self = this;

  $http.get(URL})
    .then(function(res){
        self.data = res.data;
        defer.resolve();
    });

  return defer.promise;
},
Run Code Online (Sandbox Code Playgroud)

(请注意,这只是一种可行的方法.没有什么可以阻止您返回数据而不是将其存储在服务上.请根据需要进行操作.)

如果可能,您应该考虑在视图初始化之前获取数据.通过这样做,您可以确保在用户获得页面后立即获得必要的数据.

在AngularJS应用程序初始化之前看到$ http请求?

进一步阅读

https://docs.angularjs.org/guide/services(阅读完整的开发者指南)

http://toddmotto.com/rethinking-angular-js-controllers/

我还推荐官方教程