У меня есть небольшой вопрос, что я хочу найти один элемент по его свойству, и я хочу обновить тот же элемент, также он должен отражать в коллекции.
Я не использую библиотеку использования нокаутов.
Choice = function (id, text, order, selected) {
this.Text = ko.observable(text);
this.ID = ko.observable(id);
this.Order = ko.observable(order);
this.Selected = ko.observable(selected);
},
Question = function (questiontext, id, order) {
this.QuestionName = ko.observable(questiontext);
this.QuestionId = ko.observable(id);
this.QuestionOrder = ko.observable(order);
this.Choices = ko.observableArray([]);
this.UserResponse = ko.observable();
this.Inputs = ko.observable(new Input());
},
Я хочу найти вопрос № 3, и я хочу обновить информацию о выборе элементов и добавить в "Вопросы".
Любая помощь по этому поводу.
Предполагая, что questions
относятся к ObservableArray
который содержит список Question
на вашей модели вида:
function find(array, predicate) {
array = ko.utils.unwrapObservable(array);
for (var i = 0; i < array.length; i++)
if (predicate(array[i]))
return array[i];
}
var question = find(questions, function (q) { return q.QuestionId == 3; });
var choices = question.Choices;
// Update, add or do anything with 'choices'
Вещи, которые вы, возможно, захотите сделать после:
this
функции, используя this
вместо первого аргумента.findAll
вариант findAll
который возвращает массив всех совпадений.Редактировать: Typo - следует упомянуть, что я не запускал код, пожалуйста, не копируйте-вставить вслепую.