如何根据knockout.js中的嵌套列表项更新视图?

时间:2013-06-03 12:30:14

标签: javascript knockout.js

当我在列表中更改了一些嵌套项目时,我正在寻找刷新视图。

主列表是rt.projects(),我找到一些使用ID的嵌套元素,我将其称为match并在嵌套列表中添加一个项目(SelectedMembersForProject

我想更新新添加的值以供查看,我该怎么做?

以下是我写的代码:

case "Project":
    debugger
    var match = ko.utils.arrayFirst(rt.projects(), function (item) {
        return item.Soid === ui.item.SourceSoid;
    });
    debugger;
    if (match) {
        var indexVal = rt.projects.indexOf(match)
        var AddItem = {
            MemberProfileId : ui.item.MemberSoid,
            MembeImageName: ui.item.ImageFileName,
            MemberName: ui.item.Name
        };
        match.SelectedMembersForProject.push(AddItem);
        rt.projects.replace(rt.projects()[indexVal], match);
    }
    break;

仍然无法在VIEW中看到我新添加的值!,出了什么问题?

下面的图片应该会有更多的想法 http://postimg.org/image/jx8n6516f/ http://postimg.org/image/5wx6cg4fn/

1 个答案:

答案 0 :(得分:1)

从您发布的代码看起来,问题是您的SelectedMembersForProject对象不是observableArray。从服务器检索数据时可以执行的操作,将数据集转换为适合淘汰的模型。

写作并不好玩,但这应该可以解决你的问题。

请参阅此处获取一个工作示例(其中子数组 是一个可观察数组):http://jsfiddle.net/hjhyn/

..这里是为了复制你的问题(子数组不是一个可观察的数组):http://jsfiddle.net/hjhyn/1/