0

我正在使用 Durandal 1.2,在我的视图模型中我有功能激活:

    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;
    };

问题是函数 beforeBind 在 ajax 请求结束之前被调用,所以视图是空的。

有什么问题吗?

谢谢 ;)

4

1 回答 1

0

只需将代码从函数中移到 then() 语句中即可。then() 处理从 Ajax 返回的承诺。

另一种选择是将您的函数从构造函数更改为标准函数语句。正如您的函数在调用之前进行评估一样。

代替

var myFunc = function () {};

利用

function myFunc () {} 
于 2013-08-08T12:31:04.040 回答