不同服务器模型和客户端视图模型的角度方式

时间:2013-05-20 10:38:45

标签: javascript angularjs controller viewmodel

我只是想知道在 Angular 应用中从服务器查看模型数据的最佳做法是什么?

例如在我的控制器中我从服务器获取模型(使用自定义ngResource服务)然后我需要在我的应用程序的客户端中创建一些不同的模型:

customApiService.query({ url: 'items' }, function (res) {
   // made it like this and do everything in partials with "ng-repeat"?!
   $scope.items = res;

   // but i need to model server data on client...
   angular.forEach(res, function (key, i) {
     $scope.viewModel = {
        description: key.anotherNameField // e.g. different third-party services return description under different names
     };
   });
});

1 个答案:

答案 0 :(得分:2)

我们所做的就是这种情况不是直接在控制器中使用angular resource。我们创建自己的服务

appRoot.factory('modelService', ['$resource', '$q', function ($resource, $q) {
function ModelClass() {
   this.PropertyOne=null;
   this.PropertyTwo=null; 
}
var serviceObj= {
      getData: function () {
         $resource('url').query(function(data) {
               var modelList=[];
               //Do a foreach on each record in 'data' and create 'ModelClass' object and map properties
               return modelList;
         });
      }
   }
  return serviceObj;
}]);

这使我们可以更好地控制暴露给Controller以及View的内容。这里模型的所有权与服务有关。

由于可以在任何地方注入相同的服务,因此我们不必一次又一次地进行自定义映射。