Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 区别服务器模型和客户端视图模型的角度方法_Javascript_Angularjs_Controller_Viewmodel - Fatal编程技术网

Javascript 区别服务器模型和客户端视图模型的角度方法

Javascript 区别服务器模型和客户端视图模型的角度方法,javascript,angularjs,controller,viewmodel,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

我只是想知道在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
     };
   });
});

在这种情况下,我们所做的是不直接在控制器内使用
角度资源。我们创造自己的服务

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;
}]);
这使我们能够更好地控制向控制器公开的内容,从而控制视图。这里模型的所有权属于服务


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

@Chandermani您是否仍然建议编写如上所述的映射层,将服务器端数据模型转换为视图模型,反之亦然?我们经常使用它,它允许我们非常灵活地处理复杂的UI