淘汰js foreach不与儿童收集工作

时间:2013-03-19 14:09:23

标签: knockout.js

我有一个模型,我从json数据映射,基本上包含一个类别列表,并在每个类别中,是一个控件列表...所以,在我的UI中,我有一个面板,列出了类别当用户点击它时,我将整个类别推送到(在加载时)空的observable以在另一个面板中渲染... click函数似乎正在工作但是在我的第二列中没有使用foreach渲染声明。任何帮助,将不胜感激。我的json数据有点冗长,所以最好在这里引用我的小提琴:

http://jsfiddle.net/TU3ps/4/

但这是我如何试图预见孩子,我的语法不好吗?

        <div class="left">Click any of the below categories to see its controls...
            <ul data-bind="foreach:  Categories">
                <li data-bind="click:  $parent.catClick"> 
                    <span data-bind="text:  Text"></span>
                </li>
            </ul>
        </div>
        <div class="right">Controls within the category clicked...
            <ul data-bind="foreach:  Curr.Ranges">
                <li>
                    <span data-bind="text:  FieldName" />
                </li>
            </ul>
        </div>

我应该采取更好的方式吗?基本上,我希望我的右侧面板一次只显示一个集合。我现在要做的就是显示字段名,但什么都没有显示出来。任何帮助将不胜感激....

1 个答案:

答案 0 :(得分:1)

看起来好像你想让Curr成为一个可观察的,而不是一个observableArray,并且你没有正确地分配它:

viewModel.Curr = ko.observable();
// Inside your click method
viewModel.Curr(category);

你还需要添加Ranges的虚拟属性,否则在初始的applyBindings上爆炸会爆炸:

viewModel.Curr = ko.observable({ Ranges: [] });