0

私は本当に助けになっているMustache.jsで作業しようとしています。

特定のオプションと値を持つ配列を取得することに固執しています。

私のJSONは次のようになっています。

    {
    "departments": [
        {
            "department": [
                {
                    "id": 114,
                    "deptName": "Department 1",
                    "category": [
                        {
                            "id": 127,
                            "catName": "Category Name",
                            "subCategory": []
                        },
                        {
                            "id": 115,
                            "catName": "Category Name",
                            "subCategory": []
                        }
                    ]
                }
            ]
        },
        {
            "department": [
                {
                    "id": 123,
                    "deptName": "Department 2",
                    "category": [
                        {
                            "id": 126,
                            "catName": "Category Name",
                            "subCategory": []
                        },
                        {
                            "id": 124,
                            "catName": "Category Name",
                            "subCategory": []
                        }
                    ]
                }
            ]
        }
    ]
}

主な部門名を取得するには、次のように簡単です。

JS:

$.ajax({

            url: 'link_to_json',
            dataType: 'json',
            success: function(data) {
                var template = $('#pageHomeTpl').html();
                var html = Mustache.to_html(template, data);
                $('#category-list').html(html);
            }
        });

HTML:

<ul id="category-list">
                <script id="pageHomeTpl" type="text/template">
                    {{#departments}}
                    {{#department}}
                    <li><a href="{{id}}">{{deptName}}</a></li>
                    {{/department}}
                    {{/departments}}
                  </script>
                </ul>

しかし、今度は、特定のID(たとえば、「id」:114)を持つ部門からカテゴリ(「category:」)を取得する必要があります。

助けてください。

4

2 に答える 2

1

jQuerymap()とを使用して、これらの行で試すことができますgrep()

    console.log(JSON.stringify(data)); 
var filtereddata = {"departments" : []}; 
var filtereddept= {};
filtereddept.department= $.map(data.departments, function(alldept,indx){
    return $.grep(alldept.department, function(deptobj,indx){
        return deptobj.id==114;
    });
});
filtereddata.departments[0]=filtereddept;
console.log(JSON.stringify(filtereddata));

部門のカテゴリを反復するためのテンプレート:

   <script id="pageHomeTpl" type="text/template">
                    {{#departments}}
                    {{#department}}
                    <li><a href="{{id}}">{{deptName}}</a></li>
                     {{#category}}
                     <ul>
                    <li><a href="{{id}}">{{catName}}</a></li>
                    </ul>
                    {{/category}}
                    {{/department}}
                    {{/departments}}
      </script>
于 2012-06-07T09:39:44.590 に答える
0

私はそれをテストしませんが、それはうまくいくようです...

...
success: function(data) {
    var template = $('#pageHomeTpl').html();
    var item = data.departments
    for(key in item){
        if(key == 'id' && item[key] == 114 ){
            var html = Mustache.to_html(template, item);
        }
    }
    $('#category-list').html(html);
}
...

FOR .. INステートメントを使用すると、オブジェクトまたは配列を循環させることができます。このリンクを参照してください js_loop_for_in

于 2012-06-07T08:46:59.527 に答える