我在骨干网上有一个应用程序,我希望在一个浮动字段中对一个集合进行排序,但不是这样做:
- 9.90
- 12.50
- 100.50
- 110.50
这样排序结果:
- 100.50
- 110.50
- 12.50
- 9.90
这是我的模特:
LanguageModel = Backbone.Model.extend({});
我的收藏:
LanguageCollection = Backbone.Collection.extend({
model: LanguageModel,
sort_key: 'price', // default sort key
initData: function(data){
return data;
},
comparator: function (item) {
return item.get(this.sort_key);
},
sortByField: function (fieldName) {
this.sort_key = fieldName;
this.sort();
}
});
我的观点:
var TourView = Backbone.View.extend({
initialize: function(){
this.collection_language = new LanguageCollection();
var self = this;
var success = function(){
self.render();
};
var lang = this.importLanguages();
$.when( lang).done(success);
},
importLanguages: function(){
var languages = this.collection_language.initData(jQuery.parseJSON($('#json-languages').html()));
this.collection_language.set(languages);
return true;
},
render: function(){
$.each(this.collection_language.models, function( key, value ) {
value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
});
this.collection_language.sortByField('price');
console.log(this.collection_language);
}
});
在我的视图中,我试图解析集合并将浮动价格转换为订单,但它无法解决我的问题
$.each(this.collection_language.models, function( key, value ) {
value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
});
this.collection_language.sortByField('price');
答案 0 :(得分:0)
好像排序逻辑似乎没问题。按其他字段排序正在按预期工作?
我只想建议在初始化步骤中转换价格。
最好的地方是模型的parse
方法:
parse : function (data) {
data.price = +data.price;
return data;
}
答案 1 :(得分:0)
在订单功能中找到问题,toFixed(2)
。
我改变了这个:
$.each(this.collection_language.models, function( key, value ) {
value.attributes.price = parseFloat(value.attributes.price).toFixed(2);
});
到此:
$.each(this.collection_language.models, function( key, value ) {
value.attributes.price = parseFloat(value.attributes.price);
});
现在正常工作