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