foreach访问特定模板项中的Knockout模板

时间:2015-04-20 16:06:54

标签: javascript templates knockout.js indexing foreach

我正在填写一份调查问题列表。点击调查问题后,会弹出一个带有结果图形的模态。要创建我的列表,我使用的是淘汰模板,因为我需要afterRender函数。

这是我的标记:

<div id="priorityMenuW" class="priorityMenuW shadow">
    <div class="menuHeader">Select a Survey Question:</div>
    <div id="priorityMenu" data-bind="foreach:questionTypes">
        <div class="menucategory menuItem" data-toggle="tooltip" data-bind="text:CategoryName, attr:{title:CategoryName}"></div>
        <div class="menuitem" data-toggle="tooltip" data-bind="foreach:$root.questions">
            <!-- ko if: CategoryName == $parent.CategoryName-->
            <div data-bind='template: { name: "question-template",
                                        data:$root.questions,
                                        afterRender: $root.storeQuestionIdOrder }'>
            </div>
            <!-- /ko -->
        </div>
    </div>
</div>

我的模板:

<code><script type="text/html" id="question-template">

<div class="menuItem" data-toggle="tooltip" data-bind="html:'&bull; '+ $parent.QuestionText, attr:{title:$parent.QuestionText}, css: {'itemSelected' : $root.isPriorityActive($data)}, click: function($data,event){$root.questionChoice($data,event)}"></div></script></code>

我的问题是,通过向函数$data发送questionChoice,我收到了一个包含所有模板化对象的数组。如何访问单击的特定对象?我想的可能是$data[$index],但这不起作用。

1 个答案:

答案 0 :(得分:1)

如果您想使用$data[$index],请记住$index是一个可观察的,需要进行评估:

$data[$index()]