gpt4 book ai didi

model-view-controller - Spine.js 中的模型记录排序

转载 作者:行者123 更新时间:2023-12-04 08:38:36 31 4
gpt4 key购买 nike

正如我在 Spine.js 源代码中看到的,Model.each() 函数按照 ID 的顺序返回模型的记录。在排序很重要的场景中,这是完全不可靠的:长人员列表等。

您能否提出一种保持原始记录排序的方法(与通过 refresh() 或类似函数到达的顺序相同)?

附言
情况更糟,因为默认情况下 Spine.js 在内部使用新的 GUID 作为 ID。所以记录顺序是完全随机的,这是 Not Acceptable 。

编辑:
似乎在最后一次提交 https://github.com/maccman/spine/commit/116b722dd8ea9912b9906db6b70da7948c16948a
他们使它成为可能,但我没有自己测试过,因为我从 Spine 切换到 Knockout。

最佳答案

在学习spine.js 时遇到了同样的问题。我使用的是纯 JS,所以我忽略了联系示例 http://spinejs.com/docs/example_contacts这对这个有帮助。事实上,您无法通过这种方式真正保持服务器的排序,但您可以使用 javascript 进行自己的排序。

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

首先,您设置将在模型内部进行排序的函数:

/*Extending the Student Model*/
Student.extend({

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

然后,在学生 Controller 中使用排序设置元素:
/*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)});
},


});

就是这样。

关于model-view-controller - Spine.js 中的模型记录排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168983/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com