我对Backbone非常缺乏经验,但是我继承了另一个开发者的代码来维护。我正在尝试为一个模型添加一些新的功能。以下是我目前所拥有的:
var AfeDetailCollection = Backbone.Collection.extend(
{
model: AfeDetailModel,
getSubtotalUSD: function(){
return _.reduce(this.models, function(memo, model, index, list){
return memo + model.getExtCostUSD();
}, 0, this);
},
getSubtotalLocal: function () {
return _.reduce(this.models, function (memo, model, index, list) {
return memo + model.getExtCostLocal();
}, 0, this);
},
hasMixedCurrency: function () {
var currCode = '';
this.models.each(function (model) {
if (currCode == '')
// Identify the currencyCode of the first AfeDetail object in the collection
currCode = model.get('currencyCode');
else if (currCode != model.get('currencyCode'))
// The currencyCode has changed from prior AfeDetail in the collection
return true;
});
return false;
}
}
);
hasMixedCurrency()函数是我添加的函数。这两个预先存在的函数工作正常。我尝试做的是确定AfeDetail对象的集合是否包含多个currencyCode值(AfeDetail模型上的一个属性)。因此,我只是尝试迭代该集合,直到我发现currencyCode中的变化,然后返回true。
在我的页面上的javascript中,然而,只要我试着检查这个...
if (this.collection.hasMixedCurrency()) {
...
......我明白了:* 错误:对象不支持属性或方法“each”*
我显然做错了什么,可能是一些简单的事情,但我只是没有看到它。
1条答案
按热度按时间ds97pgxw1#
看起来this.models是一个javascript数组,而不是一个Backbone.js 集合。
你可以试试用下划线的每一种方法:
另外,循环中的逻辑看起来也不对。请尝试以下代码:
**编辑:**更高性能的方式