如何为同一类的动态按钮设置监听器?

时间:2013-11-20 08:58:29

标签: javascript jquery-ui knockout.js

我是JavaScript和 knockout.js 的新手。我的问题如下:

<ul data-bind="foreach: myOuterArray">
    <li>
        [...]    
        <table>
            <tbody data-bind="foreach: a.myInnerArray">
                [...]
            </tbody>
        </table>
        <button class="mybutton" data-bind="">Add items to myInnerArray</button>
    </li>
</ul>

我遍历myOuterArray,其项目(类型a的对象)也有内部数组。在表示myInnerArrays项后,我为每个myOuterArray项添加一个按钮。该按钮打开一个带有选择列表的jQuery UI对话框。现在,此按钮应该将对话框中的内容添加到相应的myInnerArray中。也许我今天的速度有点慢,但我真的不知道如何在我的viewmodel中设置.mybutton的按钮监听器。 如果这很重要,所有字段都是可观察的。

2 个答案:

答案 0 :(得分:0)

仅仅使用按钮上的点击装订是否无效?

<button class="mybutton" data-bind="click: handlerMethod">Add items to myInnerArray</button>

我认为处理程序与myOuterArray observable在同一个viewModel中,因此绑定更可能是click: $parent.handlerMethod

在此方法中,您可以接受一个数据参数,该参数将根据您的HTML结构显示在当前的myOuterArray项目中。

    handlerMethod: function(currentOuterArrayItem, event) {
            //do stuff
        }

答案 1 :(得分:0)

按钮的上下文是myOuterArray的当前元素,因此如果类型A作为名为typeAFoo的函数,它应该看起来像

data-bind="click: typeAFoo"

你的问题不涉及jQuery UI所以删除该标签,或编辑问题,如果你真的有关于ko与jQuery UI的问题