2012-08-30 66 views
0

以下是我必須動態創建和增強頁面的代碼。類似的模式已經爲許多其他類型工作,如文本字段,按鈕,網格視圖等,但我發現它不能使用listview。.trigger('create')無法創建列表視圖

$(document).bind("pagebeforechange", function route(e, data) { 
    ... 
    $content = $page.children(":jqmData(role=content)"); 
    var markup = '<ul id="calendarList" data-role="listview"><li>HELLO</li></ul>'; 
    $content.html(markup); 
    $page.trigger('create'); 
    $.mobile.changePage($page); 
}); 

我總是會得到一個錯誤信息一樣,

Cannot read property 'jQuery16409763167318888009' of undefined 

經過調試使用Chrome,我發現它總是失敗的$ page.trigger線( '創建');

回答

1

我自己找到了解決方案。它工作正常,如果我取代了線,

$page.trigger('create'); 

用,

$page.page(); 
$content.find(":jqmData(role=listview)").listview(); 

不過,我仍然不明白爲什麼。我認爲前者是一種更新,更簡單的語法來取代後者。 $ page.trigger('create');可以一次性增強整個頁面。有人知道這兩者的區別嗎?