4

Json で解析し、次のようなファイルをリストビューにバインドする方法を知っています。

[
{
    "key": "Arthur Schopenhauer",
    "numeroFrasi": 3,
    "foto" : "images/TEST.jpg",
},
{
    "key": "Nietzsche",
    "numeroFrasi": 1,
    "foto" : "images/TEST.jpg",
},
.........

しかし、次のようなファイル内のすべての「frasi」(配列) をバインドする方法を理解したり、Web で見つけたりすることはできません。

[
{
    "key": "Arthur Schopenhauer",
    "numeroFrasi": 3,
    "foto" : "images/TEST.jpg",
    "frasi": [
        "Fras1",
        "Frase 2 schopenahuer",
        "Frase 3 schopenhahuer"
    ]
},
{
    "key": "Nietzsche",
    "numeroFrasi": 1,
    "foto" : "images/TEST.jpg",
    "frasi": [
        "Frase 2 nietzsche",
        "Frase 3 nietzsche"
    ]
},
...............

私のオブジェクトは配列ではありませんが、Json で解析された txt ファイルから次のように定義されています。

これは一般的な定義です:

 (function () {
"use strict";

var list = new WinJS.Binding.List();
var groupedItems = list.createGrouped(
    function groupKeySelector(item) { return item.group.key; },
    function groupDataSelector(item) { return item.group; }
);


WinJS.xhr({ url: "/data/frasi.txt" }).then(function (xhr) {
    var items = JSON.parse(xhr.responseText);

    // Add the items to the WinJS.Binding.List
    items.forEach(function (item) {
        list.push(item);
    });
});

次に、これが特定の定義です (ページに移動するときに「アイテム」のみを選択するため、「キー、「numeriFrasi」、「foto」、「frasi」は 1 つだけです。

 WinJS.UI.Pages.define("/pages/itemDetail/itemDetail.html", {

    ready: function (element, options) {
        item = options && options.item ? Data.resolveItemReference(options.item) : Data.items.getAt(0);

"resolveItemReference" は、作成されたすべてのアイテムから 1 つのアイテムを取得します

4

1 に答える 1

3

frasi最初に s を配列に取り除きます。underscore.js を使用できます

frasis = YOUROBJECT.map(function(el){return el.frasi;});
frasis = _(frasis).faltten();

次に、それを使用してあなたのListView

于 2013-04-11T18:30:05.383 に答える