【问题标题】:durandal activate function async codedurandal 激活函数异步代码
【发布时间】:2013-08-08 20:31:04
【问题描述】:

我正在使用 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 请求结束之前被调用,所以视图是空的。

有什么问题吗?

谢谢 ;)

【问题讨论】:

    标签: javascript durandal


    【解决方案1】:

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

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

    代替

    var myFunc = function () {};
    

    使用

    function myFunc () {} 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2014-09-22
      • 2019-01-14
      • 2013-03-12
      • 1970-01-01
      相关资源
      最近更新 更多