2015-09-11 3 views
0

У меня есть базовая коллекция, которая довольно стандартная.Фильтр 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. Переменная «Len» Я считаю, что только считается как 2 для двух JSON ключей в модели. Какие обозначения следует использовать для того, чтобы сделать его длиной числа JSON, которые существуют в коллекции?

  2. Я не верю, что мое утверждение if тоже правильно. Я знаю несколько способов доступа к ключам JSON в JS, но, похоже, в моем случае никто не работает. Я пробовал $ .each, $ .map и $ .grep, они просто дают мне пустой массив. Каков наилучший способ перебора всех значений JSON, принадлежащих к ключу «froms», и убедиться, что они соответствуют переменной, в данном случае «a»?

Заранее спасибо!

ответ

0

В коде у вас есть это:

for(var i=0, len=choiceModel.length; i<len; i++){ 

Вы уверены, что магистральная модель имеет атрибут длины? Я не очень понимаю, что JSON вы хотите повторить, но я думаю, что если вы хотите итерации JSON вашей коллекции выше, вы должны повторить сборку, а затем получить атрибут «form» каждой модели. Если вы хотите использовать фильтр, попробуйте использовать метод collection.where(attributes), см. Здесь: http://backbonejs.org/#Collection-where

+0

Это решило обе проблемы отлично, большое вам спасибо! – SAMO

Смежные вопросы