元素上的多次单击绑定仅在knockout.js中执行一次?

时间:2014-12-02 20:29:25

标签: javascript html knockout.js

我有一个下拉菜单,点击后,应打开模态对话框并关闭下拉菜单。我已将此功能存储在两个单独的函数中,如下所示:

self.toggleDropdownVisibility = function () {
    self.showDropdown(!self.showDropdown());
};

// and

self.toggleModalVisibility = function () {
    self.showModal(!self.showModal());
};

我的HTML是:

<li data-value="manage" data-bind="click: toggleModalVisibility, click: toggleDropdownVisibility">

然而问题是,当我使用这种语法时,只执行第一个函数(在本例中为toggleModalVisibility),如果我颠倒了顺序,则调用toggleDropdownVisibility。如何将两个单击事件绑定到一个元素并让它们都执行?

1 个答案:

答案 0 :(得分:2)

添加&#34; onClick&#34;函数到您的模型并将声明性单击绑定指向该模型,然后从onClick函数调用您想要调用的两个函数。

使用Javascript:

self.toggleDropdownVisibility = function () {
    self.showDropdown(!self.showDropdown());
};

self.toggleModalVisibility = function () {
    self.showModal(!self.showModal());
};

self.onClick = function () {
    self.toggleDropdownVisibility();
    self.toggleModalVisibility();
};

HTML:

<li data-value="manage" data-bind="click: onClick">