我有一个骨干系列,非常标准。
(function($){
var DataModel = Backbone.Model.extend({});
var DataCollection = Backbone.Collection.extend({
model: DataModel,
url: 'assets/path_data.json'
});
var dataCollection = new DataCollection()
dataCollection.fetch({
reset:true
});
// Choice Model
var ChoiceModel = Backbone.Model.extend({});
var choiceModel = new ChoiceModel({
froms: 'froms',
tos: 'tos'
})
我正在尝试在符合特定条件的JSON上执行一个函数。我对这段代码有两个问题。
for(var i=0, len=choiceModel.length; i<len; i++){
if (choiceModel[i].froms == a){
function geolines (a,b,f,g,h,j){
};
}
}
对于模型中的两个JSON键,我认为变量'len'仅计为2。应该使用什么表示法来使其成为集合中存在的JSON数量的长度?
我不相信我的if语句也是正确的。我知道在JS中访问JSON密钥的几种方法,但似乎没有一种方法适用于我的情况。我试过$ .each,$ .map和$ .grep,他们只是给我一个空数组。迭代属于Key'froms'的所有JSON值的最佳方法是什么,并确保它们匹配变量,在本例中为'a'?
提前谢谢!
答案 0 :(得分:0)
在你的代码中你有这个:
for(var i=0, len=choiceModel.length; i<len; i++){
你确定Backbone Model有长度属性吗?
我不太清楚你想要迭代什么JSON,但我想如果你想迭代你上面的集合的JSON,你应该迭代你的集合,然后获得每个模型的'form'属性。如果您想使用过滤器,只需尝试使用collection.where(attributes)
方法,请参阅此处:http://backbonejs.org/#Collection-where