2012-07-25 27 views
0

我使用knockout.js顯示列表值,當我不使用輸入元素這是件好事,但是當我使用「的foreach」,它呈現壞裏面輸入元素(它不顯示列表和顯示中斷的HTML元素)在Android 2.Knockout.js在Android 2

我初始化腳本中的視圖模型結束標記之前:

$(".pageId").bind('pageinit', function(){ 
ko.applyBindings(new MyViewModel()); 
}); 

我使用jQuery Mobile還工作,所以我試圖用

$(".pageId").bind('pageshow',function(){ 

$("input").checkboxradio(); 

}); 

但我沒有在Android 2上工作。

有沒有一種方法,使複選框/單選按鈕/ dropdows正確渲染在Android上使用2 knockout.js?

回答

1

這裏是我是如何能夠得到它的工作。您必須使用KO的afterRender屬性才能呈現jQuery Mobile元素。例如:

<script type="text/javascript"> 
    function jQueryify(elements, dataObj) 
    { 
     $.each(elements, function(key, obj) 
     { 
      if($(this).is('input[type="radio"]')) 
       $(obj).checkboxradio(); 
      else if($(this).is('select')) 
       $(obj).selectmenu(); 
     }); 
    } 
</script> 

,然後在標記

​​

我敢肯定有這樣做的更好的方法,但是這是我做到了。我知道你也可以使用jQuery Mobile公開的「創建」事件,但我沒有考慮到這一點。

編輯:我剛剛發現我一直在尋找在jQuery Mobile的網站上的文檔:http://jquerymobile.com/demos/1.1.1/docs/pages/page-scripting.html
如果你看一下「增強新的標記」一節,你會看到他們對如何呈現的內容,以便推薦它看起來不錯。此外,結合「pageinit」事件是指在任何需要創建將已經變成了jQuery Mobile的小工具版本。如果你希望綁定到內容之前的jQuery可以得到它(從而使其以使新的內容,其餘的渲染),只需綁定到常規的$(文件)。就緒()函數。