如何将数据推送到SC.SourceListView

时间:2012-08-22 10:02:15

标签: sproutcore sproutcore-views sproutcore-controllers

我想将一些已解析的JSON数据从我的控制器推送到SC.SourceListView (Sproutcore Showcase)。我使用SC.TreeController并将解析后的JSON设置为内容:

MyApp.thisController = SC.TreeController.create({
    treeItemChildrenKey: 'children',
    content: []
});

属性treeItemChild相应地设置为对象中的属性,并指向子对象。

SC.TreeController中的内容包含几个基于以下结构的对象(JSON数据)(这是我想要推送到树视图中的其中一个对象的示例):

children: Array[3]
    0: Object
        children: Array[1]
        data: "Boogie"
        metadata: Object
        __proto__: Object
    1: Object
    2: Object
data: "Blues"
metadata: Object
__proto__: Object

我想将data属性放在我的SC.SourceListView中,以便它可以读取。

Blues
    Boogie
    ...
    ...

此内容现已绑定到SC.SourceListView,并应在屏幕上显示data属性:

viewname: SC.SourceListView.extend({
    contentBinding: SC.Binding.oneWay('MyApp.thisController.arrangedObjects'),
    exampleView: SC.ListItemView.extend({
        contentValueKey: 'data'
    }),
    groupExampleView: SC.ListItemView.extend({
        contentValueKey: 'data'
    })
})

通过这个,我可以获得不同对象顶层的data。但是没有下拉列表,它由更深层中的对象组成。如何正确设置此视图? SC.SourceListViewSC.SourceListGroupView之间有什么区别?

(Google Group Link)

1 个答案:

答案 0 :(得分:0)

SC.SourceListGroupView是用于在SC.SourceListView内呈现群组的实际列表项视图。目前,您正在使用

groupExampleView: SC.ListItemView.extend()

但是,默认情况下,SC.ListItemView不知道如何将自身呈现为一个组,因此您应该将其更改为

groupExampleView: SC.SourceListGroupView.extend()

之后,它应该显示树。

最后(我假设这只是问题中的一个错字):你有

MyApp.thisController.anrrangedObjects

我很确定你的意思是

MyApp.thisController.arrangedObjects

如果将问题更改为SC.SourceListGroupView无法解决您的问题,请添加评论或更新您的问题!如果您仍然需要帮助,那么查看您尝试呈现的JSON结构也会很有帮助: - )

编辑:好的,所以,我对此并不是100%肯定,因为我似乎无法找到任何文档,但根据SproutCore Showcase,您可能需要确保您的父对象(具有子级的对象)的group属性设置为true。如果有帮助,请告诉我们!