3

動的プロパティ名を持つ JSON オブジェクトがあります。JsRender でプロパティ名をレンダリングするにはどうすればよいですか? JsRender デモ ページのサンプルを見てきましたが、その方法が見つかりませんでした。

例:

{
    'prop1': '123',
    'prop2': '456'
}

期待される出力:

1. prop1 = 123
2. prop3 = 456

JsFiddle: http://jsfiddle.net/kvuZC/

UPDATEワーキングJsFiddle:http://jsfiddle.net/B76WP/

4

3 に答える 3

3

ヘルパーを使用してフィールドを反復処理できます

$.views.helpers({
    getFields: function( object ) {
        var key, value,
            fieldsArray = [];
        for ( key in object ) {
            if ( object.hasOwnProperty( key )) {
                value = object[ key ];
                // For each property/field add an object to the array, with key and value
                fieldsArray.push({
                    key: key,
                    value: value
                });
            }
        }
        // Return the array, to be rendered using {{for ~fields(object)}}
        return fieldsArray;
    }
});

「フィールドの反復」シナリオのコード

{{for ~getFields(details)}}
   <b>{{>key}}</b>: {{>value}}
{{/for}}
于 2013-06-08T09:09:41.060 に答える
3

{{props}} タグを確認してください。この質問を解決するのに非常に役立ちます。 https://www.jsviews.com/#propstag

{{props}}
    1. {{>key}} = {{>prop}}
{{/props}}

出力は望ましいものになります。

于 2016-07-15T10:37:42.973 に答える
2

アプローチを変える。キーと値を保持するオブジェクトの配列にオブジェクトをマップします。

これはそれを行うべきコードです:

var jsonData = {
    'prop1': '123',
    'prop2': '456'
}
, data = $.map(jsonData, function(value, key) {return {value: value, key: key}});

$('#container').html($('#dynamicObjectTemplate').render(data));

これにより、以下が作成されます。

[{
  value: '123',
  key: 'prop1'
},{
  value: '456',
  key: 'prop2'
}]

そして、ここにjsfiddleの作業例があります(参照を介してjsrenderコードを含めることができなかったので、貼り付けました...コードは一番下にあります)

于 2013-06-07T13:34:40.720 に答える