0

我是 angularjs 的新手,在我的应用程序中我正在进行 REST API 调用,返回的响应存储为模型对象。对于我的观点,我创建了一个单独的视图模型对象,因为来自 API 的响应不能在 UI 中使用。

这是一个正确的方法吗?请注意,我使用了两种不同的模型 -> 一个从服务器获取数据,另一个用作 UI 支持模型。这类似于 Java 框架中的支持 bean 和 DAO 对象。

请告知这种方法是否可行或是否应该改变。如果有怎么办?

更新在http://jsfiddle.net/LGEKX/ 中说明了这个问题

function mycontroller($scope){
//The view model is populated by a seperate method
var viewmodel = populateViewModel();
$scope.viewmodel = viewmodel;
}

function populateViewModel(){
//Call service to update local model
var backendModel = serviceCall();
//Invoke conversion service
var converteModel = convertBackEndModel(backendModel);
}

function serviceCall(){
//Service method calls server side API and the data returned is returned in success     callback
 $http({method: 'GET', url: '/someUrl'}).
  success(function(data, status, headers, config) {
    return data;
 }).
 error(function(data, status, headers, config) {
  ...
  });

 }

 function convertBackEndModel(data){
   //This takes the data returned from API call as input and creates a view model
  //which will be used for angularjs view (in HTML)
var viewModel = {};
 viewModel.name = backendModel.backendName;
 //Though this is simple, actual code has lots of logic which basically converts one    JSON structure to another
 }

在我的 HTML 中

<div ng-app>
<div ng-controller="mycontroller">
    <!-- Binding to viewmodel from the HTML-->
    <div ng-model="viewmodel.name"></div>
</div>

4

1 回答 1

0

这是一个简单的模式,使用 $http 调用服务器,然后使用 html 绑定到范围变量

  $http({
               url: "http://localhost/people/1"
           }).success(function (data, status, headers, config) {
               if (data) {
                   $scope.person = data;
               }
           });



<div>{{person.firstName}}</div> <!-- one way -->
<input ng-model='person.firstName' /> <!-- two way -->

我认为您可能需要单独的 DTO 的唯一原因是 GET 和 PUT 服务使用不同的类,在这种情况下,您将需要处理数据。

于 2013-04-15T23:25:11.107 回答