var viewmodel = service.createCustomer();
- это способ, которым я называю модуль requirejs.вернуть значение из обещания/ajax-вызова с помощью jquery
Как создать отложенный объект, который мой createCustomer возвращает CreateCustomerViewModel, который создается внутри служебного вызова?
define(['viewmodels/CreateCustomerViewModel'],function (CreateCustomerViewModel) {
function createCustomer() {
$.getJSON('Customer/Create')
.done(function (response) {
return new CreateCustomerViewModel(response);
})
.fail(function (error) {
alert(error);
});
}
return {
createCustomer: createCustomer
};
});
2 вещи: Я хочу получить возвращаемое значение через var viewmodel = service.createCustomer() и .done .fail должны быть в службе, потому что они просто могут быть служебными ошибками. Модель просмотра не знает этого. Furtheremore его запрос GET, потому что я не отправляю данные, я извлекаю данные для формы для отображения, а затем я делаю сообщение ;-) – Elisabeth
Так как '$ .getJSON' будет асинхронным, вы не сможете сделать' viewmodel = service.createCustomer() '. Вы должны использовать либо классический обратный вызов, либо обещание (лучше). –
Для тех, кто использует jQuery <1.8, используйте 'pipe' вместо' then'. Я потратил несколько часов на это. – nikoskip