Knockout- foreach over the nest array- not working

时间:2015-07-22 06:05:03

标签: javascript arrays knockout.js

我有observableArray,它的元素是数组。 我需要foreach,但我需要每次只显示observableArray的最后一个元素 - 即最后一个数组。 例如: 我的可观察数组是:

 self.treeLists = [
         [{id:1, name:'tar'}, {id:9, name:'se'}, {id:5, name:'tzav'}],
         [{id:4, name:'sus'}, {id:8, name:'par'}],
         [{id:7, name:'tal'}, {id:6, name:'med'}]
];

所以我只需要显示第三个数组 - [{id:7,name:'tal'},{id:6,name:'med'}]

这是我的HTML,但它会导致问题! 它读起来就像我试图在observalbeArray上显示它的元素......

    <div data-bind="if: treeLists().length>1">
                    <div data-bind="foreach: treeLists()[treeLists().length-1]">
                        <div class="col-md-2">
                            <div class="organizationTreeItem">
                                <img class="floutR" data-bind="attr: {src: $parent.global.imagesManager.plusblue}, click:$parent.itemClickPathMode" />
                                <span data-bind="text:$data.name"></span>
                            </div>
                        </div>
                    </div>
                </div>

错误信息是:

1981年第{17}栏第17行未处理的例外情况 0x800a1391 - JavaScript运行时错误:'OrgName'未定义

我可以看到调试时的情况,见图:

enter image description here

1 个答案:

答案 0 :(得分:1)

$data包含最后一个数组的对象,例如:{id:7, name:'tal'}

在HTML中你绑定到$data.OrgName,但是OrgName不是绑定对象的成员,所以它确实是未定义的,就像异常提到的那样。你的意思是绑定到&#34; name&#34;?

<span data-bind="text:name"></span>

treeLists也不是observableArray。请查看以下fiddle