2017-09-20 30 views
1

我想通过ajax调用提供的值将自定义淘汰组件的参数绑定到viewmodel中。但是,看起来绑定发生在ajax调用完成之前。无论如何要确保ajax调用在绑定发生之前完成?谢谢。Durandal页面强制淘汰组件在绑定之前等待Ajax呼叫

与自定义组件的看法是这样的

<section> 
    <mycustomcomponent params="item: item"> </mycustomcomponent> 
</section> 

这里有

define(function (require) { 
    var Item = require('models/item'); 

    var item; 

    return { 
     activate: function() { 
      var ajaxCall = $.ajax({ 
       method: 'get', 
       url: 'myapicall', 
       success: function (data) { 
        item = new Item(data); 
       } 
      }); 
      return ajaxCall; 
     }, 


     item: item, 
    }; 
}); 
+0

尝试'var ajaxCall = return $ .ajax .....',这应该防止调用'attach'处理程序来同步调用... – gkb

回答

0

你可以尝试包装的成分在if结合,这样没有关系的视图模型的相关部分直到item包含有效的东西为止。

<section data-bind="if: item"> 
    <mycustomcomponent params="item: item"> </mycustomcomponent> 
</section>