基于Backbone.js模型键

时间:2015-09-11 12:00:20

标签: javascript json backbone.js

我有一个骨干系列,非常标准。

(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){
   };
  }
 }
  1. 对于模型中的两个JSON键,我认为变量'len'仅计为2。应该使用什么表示法来使其成为集合中存在的JSON数量的长度?

  2. 我不相信我的if语句也是正确的。我知道在JS中访问JSON密钥的几种方法,但似乎没有一种方法适用于我的情况。我试过$ .each,$ .map和$ .grep,他们只是给我一个空数组。迭代属于Key'froms'的所有JSON值的最佳方法是什么,并确保它们匹配变量,在本例中为'a'?

  3. 提前谢谢!

1 个答案:

答案 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