0

シングルページアプローチの使用で問題が発生しています。「フィルターページ」に移動したら、ajaxを介してアプリケーションのリストを入力したいので、ここで呼び出しをシミュレートしました。

function populateList()
{
     $('#drpApplication').empty().listview('refresh');
     if (typeof cache["FilterCounter"] == "undefined") {

                    cache["FilterCounter"] = 1;
                }
        var listItem = "<option value=" + '\'' + '1' + '\'' + ">" + 'Name1' + "</option>";
      $('#drpApplication').append(listItem);
            var listItem2 = "<option value=" + '\'' + '2' + '\'' + ">" + 'Name2' + "</option>";
      $('#drpApplication').append(listItem2);
            var listItem3 = "<option value=" + '\'' + '3' + '\'' + ">" + 'Name3' + "</option>";
      $('#drpApplication').append(listItem3);


}

[適用]をクリックすると別のページに移動し、フィルターページに戻ると、アプリケーションリストに新しいデータセットが追加されます。ただし、最初にドロップダウンを空にするように指示します。また、ドロップダウンでアプリケーションを選択すると、その選択がページ上の別のリストビューに追加されることになります。

    $('#drpApplication').change(function () {

        $("#drpApplication option:selected").each(function () {
            var filterItemId = 'liApplicationName' + cache["FilterCounter"].toString();
            $('#lstApplicationList').append('<li value="' + $(this).val() + '" id="' + filterItemId + '"data-icon="delete"><a onclick="removeFilterItem(\'' + filterItemId + '\')">' + $(this).text() + '</a></li>').listview('refresh');
            cache["FilterCounter"] = cache["FilterCounter"] + 1;
        });

    }).change();

その後の訪問で何が起こるかというと、ドロップダウンからアプリケーションを選択すると、2回目の訪問で同じエントリが2つリストビューに表示され、3回目の訪問で1つ選択するごとに3つのエントリが表示されます。

DOMがその内容などをキャッシュしているようで、停止できませんか?

このためにjfiddleを開始しましたが、リストにデータを入力する関数が実行されていません。jfiddleを使い始めたばかりなので、シミュレーションの設定が間違っている可能性がありますか?

http://jsfiddle.net/D2gbq/27/

4

1 に答える 1

0

選択を空にしてからリストビューを更新してから、新しいオプションを追加しているようです。オプションを追加した、それらを表示するには、リストビューを更新する必要があります。

これを試して:

function populateList()
{
  $('#lstApplicationList').empty();
  $('#drpApplication').empty();

  if (typeof cache["FilterCounter"] == "undefined") {
    cache["FilterCounter"] = 1;
  }
    var listItem = "<option value=" + '\'' + '1' + '\'' + ">" + 'Name1' + "</option>";
    $('#drpApplication').append(listItem);

    var listItem2 = "<option value=" + '\'' + '2' + '\'' + ">" + 'Name2' + "</option>";
    $('#drpApplication').append(listItem2);

    var listItem3 = "<option value=" + '\'' + '3' + '\'' + ">" + 'Name3' + "</option>";
    $('#drpApplication').append(listItem3);

    $('#lstApplicationList').listview('refresh');
    $('#drpApplication').listview('refresh');
}
于 2013-02-07T00:47:33.237 に答える