2016-07-01 5 views
0

У меня простая реализация схемы, как показано ниже. Существует массив, содержащий объекты. У каждого объекта есть переключатель. Мне нужно извлечь значение каждого переключателя. Как пройти через массив?Как перебирать массив, содержащий объекты в Meteor, реализующий SimpleSchema

test_schema = new SimpleSchema ({ 


    object:{ 
     type:Array, 

    }, 
    "object.$":{ 
     type:Object 
    }, 

    "object.$.condition" :{ 
     type:String, 
     autoform:{ 
      type: "select-radio-inline", 
      options:[{label:'1', value:"one"}] 
     }, 
    }, 


"zod": { 
    type: String, 
    optional:true, 
    custom: function() { 

     alert(this.field('object').value); 


    } 
} 

Я попробовал инкрементный подход, где я удалил определение массива и просто чтобы получить данные только из объектов. Someethiing, как это работает:

this.field('object.condition').value 

Однако, после того, как охватывающее объект в массиве, что-то вроде этого не работает.

this.field('object.$.condition').value 

Что работает,:

this.field('object.0.condition').value 

Это возвращает значение условия первого объекта. Как мне, скажем, извлечь другие элементы?

+0

В JS кода, где у вас есть объект в качестве переменной или в вашем определении простой схемы? –

ответ

0

Знак '$' является заполнителем для индекса массива в определении схемы.

При обращении к фактическим экземплярам вы заменяете его фактическим индексом массива.

Так что первый из них имеет индекс 0, следующий один имеет индекс = 1, и так далее:

for (var i=0, i<object.length, i++) { 
    console.log(i, this.field('object.'+i+'.condition').value 
} 
+0

У меня это получилось, но как мне пройти через это? Я triend помещаю его в цикл for, но это мало что делало. Eg - for (var i = 0, i blueren

+0

Обновлен код, как это сделать. –

+0

Аргумент функции поля - это строка, для создания которой вы должны использовать переменную i, как в моем ответе. Не письмо i, как в вашем комментарии. –