如何将数组绑定到 ListView?

4

我知道如何使用Json解析并将文件绑定到ListView:

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

但我不明白,也找不到关于如何绑定像这样文件中的每个“frasi”(它是一个数组)的方法:

[
{
    "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);
    });
});

那么这就是具体的定义(因为当我导航到我的页面时,我只选择了一个“item”,所以只有一个“key”,“numeriFrasi”,“foto”,“frasi”):

 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个回答

3

首先将frasi过滤到数组中。您可以使用underscore.js。

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

然后使用它来构建您的ListView

嗨!谢谢回答。我无法使其工作,因为它说 YOUROBJECT(当然,我放置了 myobject)不支持 .map 函数... - Francesco Bonizzi
1
我假设你的对象是一个数组(问题中的第二部分代码)。尝试使用 _.map。 - Mohsen
我添加了我的对象定义。希望这可以帮到你。(item.map 或 item_.map 不起作用) - Francesco Bonizzi
0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法 'map'。 - Francesco Bonizzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接