2016-02-25 2 views
3
[ 
    { 
    "id": 1, 
    "question": "Top Level question", 
    "answers": [ 
     {"id" : 1, "isSelected" : false}, 
     {"id" : 2, "isSelected" : true}, 
     {"id" : 3, "isSelected" : false}, 
     {"id" : 4, "isSelected" : false}, 
     {"id" : 5, "isSelected" : false}, 
     {"id" : 6, "isSelected" : false} 
    ], 
    "MaxAllowedChoice" : 1, 
    "isEnabled" : true, 
    "NowSelected" : 0 
    } 
] 

Я написал следующий цикл:

for (let question of this.questions) { 
    //console.log(question.answers); // array of answers 

    for(let answer of question.answers) { 
    //this.$set('answer.isSelected', true); 
    console.log('Before: ', answer.isSelected); 
    // this.$set('answer.isSelected', true); //warning: You are setting a non-existent path "answer.isSelected" 
    this.$set('questions.answers.answer.isSelected', true); // so look like I should to do like this to change value 
    // this.$set('questions.answers.answer.isSelected', true); //I can't understand how to write it's correctly... like this or above. 
    console.log('After: ', answer.isSelected); 
    } 
} 

мне нужно изменить все значения истины (или это можно изменить истинный < -> ложные и наоборот). Я не понимаю, как достичь необходимого ключа. this.$set('answer.isSelected', true); производят предупреждение и выглядят так, как будто он не может определить, какой ключ он должен изменить.

this.$set('questions.answers.answer.isSelected', true); не производим, но я не уверен, что это значение изменения в нужном месте. Потому что я вижу в консоли:

Перед: ложные
После: ложных
Перед: истинный
После: истинный

Но все значения в моем коде должны быть установлены верно.

ответ

2

Если я правильно понял, вам не нужно использовать this.$set(). Вы должны быть в состоянии установить свойство непосредственно на текущий ответ в каждой итерации:

for(let question of this.questions) { 
    for(let answer of question.answers) { 
     answer.isSelected = true; 
    } 
} 

Если вам действительно нужно использовать $set() (который может иметь смысл в некоторых случаях), вам придется использовать индексы массива по ключевой ссылке:

this.$set('questions[0].answers[0].isSelected', true);