4

JqueryMobileリストビューのテンプレートを作成しています。テンプレートを完全に汎用的にするには、listitemテキストを渡す必要があります。したがって、現在、私のリストビュー構成は次のようになっています。

<ul data-role="listview" data-create="false" class="template" data-config='{
    "type":"listview",
    "data":"getRetailers",
    "custom_classes":["embedded_filter updateResults f-875","nMT pickList f-875 widget_listview","f-n",""],
    "lib":"static_listview.html",
    "tmp":"tmp_listview_inset",
    "lang":"locale_search",
    ...
    }'></ul>

私の問題は、リストアイテムのテキストにJavascriptコンストラクターを含める方法です。これは次のようになります。

inv.company+', '+ inv.zip + ', ' + inv.city

しかし、次のように挿入します。

...
"text":"inv.company+', '+ inv.zip + ', ' + inv.city"
}

動作しません。

質問
JSONにJavascriptコンストラクターを含める方法は?

4

4 に答える 4

0

このコードを試してください:

"text":"'"+ inv.company+ "', '"+ inv.zip + "','" + inv.city+ "'";
于 2012-12-22T17:38:14.963 に答える
0

Ok。良くありませんが、機能しています:

1) 私の JSON では、次のような関数名のみを渡しています。

<ul data-role="listview" data-create="false" class="template" data-config='{  
    "type":"listview",
    "data":"getRetailers",
    "custom_classes":["embedded_filter updateResults f-875","nMT pickList f-875 widget_listview","f-n",""],
    "lib":"static_listview.html",
    "tmp":"tmp_listview_inset",
    "lang":"locale_search",
    "text":"buildRetailers",
    ...
}'></ul>

2)次に、スクリプトでモジュールに追加buildRetailersしていdynoDataます:

var dynoData = {
    ...
    buildRetailers: function (inv) {
        return inv.company+', '+ inv.zip + ', '+ inv.city;
    },
    ...
}

3)そして、リストビュー文字列ビルダーからこれを呼び出します:

....
listItem = listItem.replace( widget.options.re_theme, li_theme );
listItem = listItem.replace( widget.options.re_iconpos, li_iconpos );
listItem = listItem.replace( widget.options.re_icon, li_icon );
// call the function to return the list item text
listItem = listItem.replace( widget.options.re_text, dynoData[ li_text ](inv) );

そのため、JSON 構成で関数文字列を渡すことができないように見えるため、必要なものを構築する関数を追加する必要があります。誰かがより良い方法を知っている場合は、投稿してください。テストして確認します。

于 2012-12-22T17:56:15.010 に答える
0

inv オブジェクトのオブジェクト リテラル バージョンをそのまま渡すことはできませんか。

"text" : {
    "company": "some value here",
    "zip": "another value here",
    "city": "another value"
}
于 2012-12-22T18:18:35.457 に答える
-1

通常、次のようにします。

"text": function(){ return inv.company+', '+ inv.zip + ', ' + inv.city }

しかし、それが機能するかどうかはわかりません。とにかく試すことができます。

于 2012-12-22T17:29:27.707 に答える