javascript - 如何仅使用一个数据绑定(bind)来调用 2 个函数?

标签 javascript html knockout.js

我试图让 2 个函数仅运行到一个数据绑定(bind)中,但我遇到了一些问题,因为其中一个函数在 HTML 中运行,我无法更改这一点。我用谷歌搜索了这个问题并得到了答案:

click:function(key){text: text}, click:callFunction()

但这不起作用。第二次点击绑定(bind)有效,但第一次点击绑定(bind)无效。

这是我的按钮:

<button data-bind="attr: {for: 'CC-prodDetails-' + $data.value}, text:key, 
                                                click:function(key){
                                                    $parent.selectedOption(key);
                                                    $parent.selectedOptionValue(key);
                                                }" class="volt"></button>

这是我需要运行的函数:

            changeClass: function () {
            $("button.volt").toggleClass('voltActive');
        },

有人可以帮助我吗? 将 HTML 函数放在另一个函数中或将其更改为 JS 是不可能的。

最佳答案

通过将 JS 函数包装在 HTML 函数中,您可以同时调用 HTML 函数和 JS 函数。提供给 HTML 函数的第一个参数是当前绑定(bind)模型:

ko.applyBindings({
  myJsFunction: function() { console.log('JS function called'); }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<button data-bind="click: function(model) { console.log('HTML function called'); model.myJsFunction(); }">Click me</button>

关于javascript - 如何仅使用一个数据绑定(bind)来调用 2 个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55403299/

相关文章:

javascript - 绘制谷歌地图形状标记对象

javascript - 在标签附近打开的弹出窗口的正式名称是什么 [包括图片]

twitter-bootstrap - knockout Twitter Bootstrap 弹出框绑定(bind)

javascript - 如何使用模型值动态更改选择菜单焦点颜色 - angularjs

javascript - HTML5 : Antialiasing leaves traces when I erase the image

javascript - contenteditable 中的自动链接 URL

html - Div 内容未在打印中显示

html - 加载程序未在 Angular 4 webapp 中居中对齐

javascript - 在 knockout.js 中使用 mustache 模板

javascript - 如何将 knockout 的 Observable 数组长度绑定(bind)到 html 元素