4
var viewmodel = service.createCustomer();
是我調用requirejs模塊的方式。從jquery返回promise/ajax調用的值
我該如何創建一個延遲對象,讓我的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應該在服務中,因爲它們可能是服務錯誤。視圖模型不知道這一點。另外還有一個GET請求,因爲我沒有發佈數據我檢索公式的數據來顯示然後我做了一個帖子;-) – Elisabeth
因爲'$ .getJSON'將是異步的,所以你不能'viewmodel = service.createCustomer() '。你必須使用經典的回調或Promise(更好)。 –
對於那些使用jQuery <1.8使用'pipe'而不是'then'。我浪費了幾個小時來處理這個問題。 – nikoskip