私は angularjs を初めて使用し、アプリケーションで REST API 呼び出しを行っており、返された応答はモデル オブジェクトとして保存されます。私のビューでは、API からの応答をそのまま UI で使用できないため、別のビュー モデル オブジェクトを作成しました。
これは正しいアプローチですか?2 つの異なるモデルを使用していることに注意してください。1 つはサーバーからデータを取得し、もう 1 つは 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>