我正在使用Durandal 1.2,在我的viewmodel中我有功能激活:
self.activate = function (data) {
function update(clienteId) {
self.Loading(true);
return $.when(
clienteRepository.ClienteCompact(clienteId),
clienteRepository.Prodotti(clienteId),
clienteRepository.Interventi(clienteId),
clienteRepository.Abbonamenti(clienteId)
).then(function (cliente, prodotti, interventi, abbonamenti) {
self.Cliente(cliente[0]).Prodotti(prodotti[0]).Interventi(interventi[0]).Abbonamenti(abbonamenti[0]);
self.Loading(false);
debugger;
});
};
var clienteId = data.splat[1];
if ($.isNumeric(clienteId)) {
return update();
} else {
return true;
}
};
我有功能beforeBind:
self.beforeBind = function () {
debugger;
};
问题是在ajax请求结束之前调用函数beforeBind,因此视图为空。
有什么问题?
谢谢;)
答案 0 :(得分:0)
只需在then()语句中移动函数中的代码即可。 then()处理来自Ajax的返回的promise。
另一种选择是将函数从构造函数更改为标准函数语句。就像你的函数在被调用之前一样被评估。
而不是
var myFunc = function () {};
使用
function myFunc () {}