この問題を抱えている人をたくさん見てきましたが、何らかの理由でうまくいく解決策を見つけることができません。
次のエラーが表示されます。
Uncaught Error: cannot call methods on listview prior to initialization; attempted to call method 'refresh'
これが何が起こっているかの内訳です。
私はこのイベントをバインドしています:
$('#person').bind('pagebeforeshow', function(e, data){
Person.getPersonData();
});
getPersonData() メソッドでは、アンダースコア _.after 関数を使用してテンプレートをレンダリングし、すべての ajax 呼び出しが行われた後に 3 つのリストビューを更新しています。Knockout.js を使用して、いくつかのデータ バインディングを適用しています。
var tmplMarkup = $('#tmpl-person').html();
var compiledTmpl = _.template( tmplMarkup, {data: Person.data} );
$('#person-wrapper').html(compiledTmpl);
$('#person-info-wrapper').listview('refresh');
$('#person-related-wrapper').listview('refresh');
$('#person-groups-wrapper').listview('refresh');
$('#person-notes-wrapper').listview('refresh');
ko.applyBindings(Person.data, document.getElementById('person-notes-form'));
ここで何が間違っているのかわかりません。さまざまなページ読み込みイベントにバインドしようとしましたが、うまくいきませんでした。ajax呼び出しが行われた数秒後にsetTimeOutを使用してリストビューを更新しようとしましたが、それも役に立ちませんでした。
前もって感謝します。