2017-09-20 67 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>