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

Knockout Template in foreach access specific template item

我正在填充调查问题列表。单击调查问题后,会弹出一个包含结果图表的模式。为了创建我的列表,我使用了一个挖空模板,因为我需要 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],但那行不通。

如果你想使用$data[$index],记住$index是一个observable并且需要评估:

$data[$index()]