首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ko.ObservableArray中的更新项

ko.ObservableArray中的更新项
EN

Stack Overflow用户
提问于 2013-12-06 05:53:24
回答 1查看 213关注 0票数 0

我有一个小问题,我想找到一个项目的属性,我想更新相同的项目,也应该反映在集合。

我不使用敲除的util库.

代码语言:javascript
复制
 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,我想更新项目,选择信息,并添加到问题。

在这方面有什么帮助吗。

EN

回答 1

Stack Overflow用户

发布于 2013-12-09 16:16:01

假设questions引用ObservableArray,其中包含视图模型中的Question的列表:

代码语言:javascript
复制
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而不是第一个参数增强它们的原型。
  • 优化性能(限制查找)。
  • 实现一个返回所有匹配的数组的findAll变量。
  • 考虑使用第三方库来帮助所有这些,直到这些特性获得标准化为止。一些第三方库对所有这些都很在行;这取决于您需要对这些结构进行多大范围的操作。不要无缘无故地添加依赖,但也不要通过在组件不是目标时重新发明轮子来加重自己的负担。

编辑: Typo --应该提到我没有运行代码,请不要盲目复制粘贴。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20416988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档