0

'Ello StackOverflowers.

ListViewこれが私のシナリオですlocalStorage。そのリストビューにデータを入力して「更新」するすべての作業。しかし!

に5つ以上の要素が追加された場合、検索バーを追加したいと思いますListView。これは私の現在のコードです(動作していません):

if (resultLength > 5)
{
    // alert('5 or more elemnts found.');
    $("#ConnectionList").attr("data-filter", true);
    $("#ConnectionList").attr("data-filter-placeholder", "Search...");
}

のコメントを外すとalert、正しく起動します。2行の後ろに追加.listview('refresh')してもうまくいかないようです。

私は何を間違っていますか?

前もって感謝します。

4

1 に答える 1

1

残念ながら、これはうまくいきません。jQuery Mobileフィルターを既存のリストビューに動的に追加することはできません。

しかし、回避策があります。リストビューにデータを入力する前に、入力しようとしている要素の数をカウントします。番号が 5 以上の場合は、現在のリストビューを削除し、同じ場所に新しいリストビューを追加します。これは別の奇妙なことです。(フィルターを念頭に置いて) リストビューを最初から作成すると、フィルターが正常に生成されます。

私はあなたのために例を作りました: http://jsfiddle.net/Gajotres/SS7vJ/

$(document).on('pagebeforeshow', '#index', function(){       
    $('<ul>').attr({'id':'test-listview','data-role':'listview', 'data-filter':'true','data-filter-placeholder':'Search...'}).appendTo('#index [data-role="content"]');
    $('<li>').append('<a href="#">Audi</a>').appendTo('#test-listview');
    $('<li>').append('<a href="#">Mercedes</a>').appendTo('#test-listview');
    $('<li>').append('<a href="#">Opel</a>').appendTo('#test-listview');
    $('#test-listview').listview().listview('refresh');
});

また、.listview( を 2 回呼び出すことを忘れないでください。最初は refresh パラメータなしで、2 回目は refresh パラメータを指定して呼び出します。これがないと、次のエラーが発生します。

cannot call methods on listview prior to initialization

この問題の詳細については、このARTICLEを参照してください。わかりやすくするために、これは私の個人的なブログです。または、こちらをご覧ください。マークアップ拡張の問題という章を探してください。

于 2013-03-01T17:58:36.300 に答える