如何在Sproutcore中连接两个SC.RecordArray类型?

时间:2012-12-06 08:48:08

标签: javascript sql database sproutcore

以下是代码:

        queryTree = SC.Query.local('Tree.Category',
        "categoryId = {categoryId}", {
            categoryId: this.get('guid'),
            orderBy: "name ASC"
        });
        queryNote = SC.Query.local('Tree.Note',
            "categoryId = {categoryId}", {
            categoryId: this.get('guid'),
            orderBy: "name ASC"
        });
        var arrayCategory = Tree.store.find(queryTree);
        var arrayNote = Tree.store.find(queryNote);
        //Concatenate arrayCategory to arrayNote

我想返回一个新的记录数组,将结果追加到arrayCategory和arrayNote。我浏览了文档,但似乎没有连接函数。

2 个答案:

答案 0 :(得分:1)

这应该可以正常工作:

var result = Tree.store.find(SC.Query.local([Tree.Category, Tree.Note],
  "categoryId = {categoryId}", {
  categoryId: this.get('guid'),
  orderBy: "name ASC"
}));

要连接两个数组,你可以使用pushObjects方法,但它不能用于SC.Query的结果,因为它返回一个不可编辑的SC.RecordArray(因为它在你添加或删除记录时会自动更新)

答案 1 :(得分:0)

我以为我必须连接两个搜索结果。但我这样解决了问题: 对于Tree.NoteTree.Category中的每条记录,我创建了一个名为isChild的字段,并在前者中设置为YES,在后者中设置为NO。 此外,我将函数的返回值更改为:

return Tree.store.find(SC.Query.local(['Tree.Category','Tree.Note'],
        "categoryId = {categoryId}", {
            categoryId: this.get('guid'),
            orderBy: 'isChild, name',

        }))
编辑:有些事还是错的。有人建议怎么改变这个?