Knockout.js 在单击按钮时设置可观察值

Knockout.js 在单击按钮时设置可观察值,knockout.js,Knockout.js,在我的页面上,我想跟踪用户在可观察的窗口中单击的按钮: self.action = ko.observable(); 我可以编写一个函数setAction,并在每次单击按钮时使用一个参数调用它,如下所示: self.setAction = function (action) { self.action(action); } 但我想知道是否有一种方法可以做到这一点,而不必每次调用setAction函数?您可以内联完成: <button type="button" class="btn

在我的页面上,我想跟踪用户在可观察的窗口中单击的按钮:

self.action = ko.observable();
我可以编写一个函数
setAction
,并在每次单击按钮时使用一个参数调用它,如下所示:

self.setAction = function (action) {
  self.action(action);
}

但我想知道是否有一种方法可以做到这一点,而不必每次调用
setAction
函数?

您可以内联完成:

<button type="button" class="btn" data-bind="click: action.bind($data, 'btn-name')">btn-name</button>
btn名称
或者传递实际的按钮对象

<button type="button" class="btn" data-bind="click: action.bind($data, this)">btn-name</button>
btn名称
或者,如果您的问题是每次都必须编写此单击事件,则可以为每个按钮添加一个类,并添加一个事件侦听器来设置操作

<button type="button" class="btn actionBtn">btn-name</button>

$(".actionBtn").click(function(){
     var btn = $(this);
     viewModel.action(btn);
});
btn名称
$(“.actionBtn”)。单击(函数(){
var btn=$(本);
viewModel.action(btn);
});

您的意思是喜欢使用jquery属性吗?比如按钮的id$(this).attr('id')
btn
的值看起来像
div#cancel.tab.actionBtn.tabSelected
有没有办法只获取名称?知道如何实现吗?#cancel是id。因此,您可以这样做而不是传递btn。viewModel.action(btn.attr('id'));但是现在您所说的名称so是属性名so.attr('name')。使用JSFIDLE演示或按钮样板更新问题。但是i btn.attr('id')将返回“cancel”,您使用的是哪种实现?第一,第二还是第三?因为我给你的答案是基于第三个