Я новичок в программировании (особенно в JS и даже больше с KO), и я пытаюсь создать интерактивную викторину, предназначенную для использования в классе учениками старших классов. Благодаря this article (который предоставил практическое руководство и код, который я использовал в качестве базы, пытаясь перевести его в соответствии с моими потребностями), и некоторые полезные люди здесь, я теперь придумал что-то похожее на это:Почему наблюдаемый массив не наблюдается в Knockout JS?
Все хорошо, потому что это функционально. Но ...: p Теперь я хотел бы добавить наблюдаемый массив, в который я бы нажал() все выбранные ответы каждый раз, когда пользователь нажимает один, чтобы я мог в конце сравнить compareAnswers(). Length to questions(). Length и, если они будут одинаковыми, я бы сделал (пока не включен в код) видимым.
я объявил мой массив в конструктор QuizViewModel как так (как это касается всей викторины, так что я думаю, что это, где он должен идти):
var selectedAnswers = ko.observableArray();
А потом мне нужно, каждый раз, чтобы подтолкнуть selectedAnswer из конструктора Question в него. И вот где загвоздка это ... Вот часть моего сценария:
//Construction
$.each(quizName.controls, function(index, question) {
quiz.questions.push(new Question(index + 1, question));
quiz.selectedAnswers().push(question.selectedAnswer);
});
Это делает заполнить массив под названием selectedAnswers(), но это только заполняется Undefineds, что 1) не меняются даже при нажатии кнопки ответ (undefined не заменен щелчком selectedAnswer ...) и selectedAnswers(). Длина уже равна общему числу вопросов, что означает, что сравнение, которое я хотел сделать, не будет работать ...
будь то фундаментальная логика KO, которую я не получаю здесь (или это логика JS, которая определенно, похоже, ускользает от меня!) Любые мысли по этому вопросу были бы очень признательны!
Что не так в вашей скрипке? – DevelopmentIsMyPassion
@AshReva Все правильно, но если вы заглянете на консоль, то увидите, что selectedAnswers() имеет 6 неопределенных вместо обновления, когда я нажимаю ... И мне нужно, чтобы оно было пустым в начале и чтобы добавлять вопросы, когда я нажимаю, поэтому у меня есть шесть ТОЛЬКО НА КОНЕЦ ... – ReinaDelSur
То, потому что у вас есть этот $ .each, когда загружается страница. – DevelopmentIsMyPassion