В моем контроллере I проходных вопросов в анкете:Как получить выбранное значение из нг-опциона внутри нг-повтор
for (var j = 0; j < s.Questions.length; j++) {
var q = s.Questions[j];
var aq = datacontext.getAnsweredQuestion(propertySurvey.ID, q.ID);
if (q.QuestionType === 'SingleAnswer') {
q.dropdown = true;
q.selectedOption = aq.ActualAnswers.length > 0 ?
aq.ActualAnswers[0].AnswerID : null;
q.optionChanged = function() {
var debug = q.selectedOption; //ERROR - this is undefined
aq.toggleAnswer(q.selectedOption);
}
}
//etc
}
На моем взгляде, я Переберите вопросы:
<div class="card" ng-repeat="q in s.Questions">
<div class="item item-divider">{{q.Text}}</div>
<div class="item" ng-if="q.dropdown">
<select ng-model="q.selectedOption"
ng-options="va.AnswerID as va.Text for va in q.ValidAnswers"
ng-change="q.optionChanged()">
<option>--Select--</option>
</select>
</div>
</div>
При просмотре в браузере отображается правильный selectedOption
и вызывается функция q.optionChanged()
. Но внутри этой функции, q.selectedOption
неопределен
EDIT Эта функция появляется на работу. Но я не могу объяснить, почему!
q.optionChanged = function() {
var debug = q.selectedOption;
var answerid = this.selectedOption;
aq.toggleAnswer(answerid);
}
Опция автоматически выбирается. Но я не могу получить значение вновь выбранного элемента в функции 'optionChanged'. 'ValidAnswers' и' ActualAnswers' - это два отдельных массива. Я пробовал код, как вы написали, я думаю, что привязываю ng-модель к «ActualAnswer», но привязывая параметры к «ValidAnswer», а это означает, что он больше не будет автоматически выбираться. Я обнаружил, что 'this.selectedOption' вместо' q.selectedOption', как представляется, содержит значение ... – Colin
Почему голос? Не я. – Colin