首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spine.js中的模型记录排序

Spine.js中的模型记录排序
EN

Stack Overflow用户
提问于 2011-08-24 00:07:35
回答 1查看 1.2K关注 0票数 5

正如我在Spine.js源代码中看到的那样,Model.each()函数按照它们的ID顺序返回模型的记录。在订单很重要的情况下,这是完全不可靠的:长人列表等等。

您能建议一种方法来保持原始记录的顺序(按照它们通过refresh()或类似函数到达的顺序)吗?

更糟糕的是,默认情况下,Spine.js内部使用新的GUID作为ID。因此,记录顺序是完全随机的,这是不可接受的。

编辑:似乎在最后一次提交https://github.com/maccman/spine/commit/116b722dd8ea9912b9906db6b70da7948c16948a

他们让它成为可能,但我没有亲自测试,因为我从脊柱转到了淘汰赛。

EN

回答 1

Stack Overflow用户

发布于 2013-01-12 20:38:46

在学习spine.js时遇到了同样的问题。我使用的是纯JS,所以我忽略了帮助解决这个问题的联系人示例http://spinejs.com/docs/example_contacts。事实上,您不能以这种方式将顺序从服务器上保留下来,但是您可以使用javascript进行自己的排序。

注意,我在这里使用的是元素模式。(http://spinejs.com/docs/controller_patterns)

首先,设置要在模型中进行排序的函数:

代码语言:javascript
复制
/*Extending the Student Model*/
Student.extend({

    nameSort: function(a,b) {
        if ((a.name || a.email) > (b.name || b.email)) 
            return 1; 
        else 
            return -1
    }
});

然后,在学生控制器中使用排序设置元素:

代码语言:javascript
复制
/*Controller that manages the students*/
var Students = Spine.Controller.sub({

           /*code ommited for simplicity*/

            addOne: function(student){
            var item = new StudentItem({item: student});
            this.append(item.render());
    },

    addAll: function(){
            var sortedByName = Student.all().sort(Student.nameSort);
            var _self = this;
            $.each(sortedByName, function(){_self.addOne(this)});
    },


});   

就是这样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7168983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档