Я новичок в angularjs, и в своем приложении я делаю вызов API REST и возвращаемый ответ сохраняется как объект модели. По моему мнению, я создал отдельный объект модели представления, поскольку ответ от API не может быть таким, как он используется в пользовательском интерфейсе.Модель использования данных AngularJS
Это правильный подход? Обратите внимание, что я использую две разные модели -> Один получает данные с сервера, а другой используется в качестве модели подбора интерфейса. Это похоже на бэк-компонент и объекты DAO в Java-инфраструктурах.
Просьба сообщить, подходит ли этот подход или его следует изменить. Если да, то как?
Update проиллюстрировали вопрос в 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>
Без какого-либо кода и дальнейших объяснений этот вопрос трудно понять для кого-то еще. – TheHippo
AngularJS работает иначе, чем традиционные приложения Java/.NET (MVC или MVVM). Совершенно необязательно иметь отдельный набор классов. JavaScript - это динамический язык, и вам легко приложить дополнительные свойства к вашей модели, не мешая управлять двусторонней связью между представлением и контроллером. Вы можете напрямую использовать ответ от службы. Пожалуйста, проверьте документацию на AngularJS и некоторые интересные видео на Youtube, чтобы получить представление об использовании шаблонов. – Ketan
@ Ketan Я понимаю, что мы можем динамически присоединить свойства к модели. Но можете ли вы, пожалуйста, разработать шаблон дизайна, который следует соблюдать здесь. Обычно я отделяю модель пользовательского интерфейса и модель уровня persistence и имею объект передачи данных, который делает преобразование между ними в случае серверных языков. Я понимаю, что могу пропустить его и напрямую привязать к той же модели, но в моем случае я предпочел бы отдельную модель для представления. Мне нужно знать, является ли это предпочтительной практикой. Пожалуйста, совет: – Raghav