2012-04-29 23 views
19

<ul data-role="listview">を動的に埋めて、location.href="#Results"を呼び出し、最後にlistview('refresh')を呼び出します。jQueryモバイルエラー "初期化の前にlistviewのメソッドを呼び出せません"

これはすべて、同じページからのAjaxリクエストの成功コールバックで行われます。それは、多かれ少なかれ作品が、私は次のエラーを取得しています:

Uncaught cannot call methods on listview prior to initialization; attempted to call method 'refresh' 

私はjQueryのモバイルはまだリストビューを構築していなかったと思います。私は何ができますか?

答えて

10

http://jquerymobile.com/demos/1.1.0/docs/api/events.html pageinitイベントにフックする必要があります。この前にJQMメソッドを呼び出すことはできません。 :

$('#Results').bind('pageinit', function() { 
    $('#myListview').listview('refresh'); 
}); 
+3

ここで「#results」は何ですか – Amit

+2

@ user1656416 #ResultsはjQuery MobileのページIDです。詳細はこちら:http://jquerymobile.com/demos/1.2.0/docs/pages/dialog/index.html – HoffZ

+0

このエラーで示唆されたことを試した後、私のページは表示されません。それはエラーを取り除きますが、リフレッシュをバインドしているページは表示されません。 – JzInqXc9Dg

14

私は同じエラーがありました。私はクエリに ":visible"を追加して解決したので、リストが見える場合にのみ実行されます。

だからあなたのコードは次のようになります:

$('#myListview:visible').listview('refresh'); 

は私のためにうまく働きました!

+1

ありがとうございます - Googleであなたの答えが見つかりました、私の問題を解決! – Greg

+0

あなたは大歓迎です!私が助けることができたことをうれしく思います。 – Ptur

+0

これに似た問題があって、助けにお答えします!ありがとう – Ovi

28

あなたはそれがすでに初期化されているかどうか、それが初期化される場合には、リストを更新し確認する必要がありそうでない場合は、次のとおり作成トリガ:

if ($('#myListview').hasClass('ui-listview')) { 
    $('#myListview').listview('refresh'); 
    } 
else { 
    $('#myListview').trigger('create'); 
    } 
2

使用$.mobile.changePage("#Results");の代わりlocation.href
実際location.hrefは、ページをリロードそのリストビューは

を破壊し、そしてちょうどあらゆるずにリストビューのメソッドを呼び出す

+0

これは本当に素晴らしいアイデアでした。ありがとうございました。 –

+0

大歓迎フィリピン –

31

をlistview.refresh取得します最初のパラメータ:

$('#myListview').listview().listview('refresh'); 

ソリューションは、単に私のために正常に動作しますlistview.refresh追加http://www.gajotres.net/uncaught-error-cannot-call-methods-on-prior-to-initialization-attempted-to-call-method-refresh/

+2

whoa!私の頭を壁に打つ1時間後に私のために働いた。 – ethanpil

+1

私のために同じ:JQM 1.4で。5、私は[FullCalendar](http://fullcalendar.io/)のイベントをクリックすると動的ポップアップを作成しようとしました... このスレッドを見つける将来のユーザーのために:私は次のコードを使用しました 'eventClick :function(calEvent、jsEvent、view){ \t \t \t \t \t var $ popup = $( '

testPopup
').appendTo( '[data-role = "content"]'); \t \t \t \t \t \t $( '#eventPopup')。popup()。popup( "open"); \t \t \t \t}「 – intrixius

+1

@ethanpilとintrixius私はあなたの頭が重大な損傷を受けるのを防ぎました。 :-) –

0

から取られた、と私はあまりにものdivにコンテンツをロードするために、AJAXを使用しています。

document.getElementById("myListview").innerHTML = xmlhttp.responseText; 
//works fine on my work 
$('#myListview').listview('refresh'); 

ここに私の投稿があります。

jquery mobile ajax load content into a div element will lose it's css style

私はprobem.finaly回答here.thanksを見つける私のポストを解決するために、ほぼ3時間を費やしています。

関連する問題