【问题标题】:Set observable value on button click在按钮单击时设置可观察值
【发布时间】:2017-12-02 23:23:00
【问题描述】:

在我的页面上,我想跟踪用户在 observable 中点击了哪个按钮:

self.action = ko.observable();

我可以编写一个函数setAction,并在每次单击按钮时使用参数调用它,如下所示:

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

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

【问题讨论】:

标签: knockout.js


【解决方案1】:

你可以内联:

<button type="button" class="btn" data-bind="click: action.bind($data, 'btn-name')">btn-name</button>

或传递实际的按钮对象

<button type="button" class="btn" data-bind="click: action.bind($data, this)">btn-name</button>

或者如果您的问题是您必须每次都编写此点击事件,您可以为每个按钮添加一个类并添加一个事件侦听器来设置操作。

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

$(".actionBtn").click(function(){
     var btn = $(this);
     viewModel.action(btn);
});

【讨论】:

  • 你的意思是喜欢使用jquery属性?就像按钮的 id。 $(this).attr('id')
  • btn 的值看起来像div#cancel.tab.actionBtn.tabSelected 有没有办法只获取名称?
  • 知道如何实现这一目标吗?
  • #cancel 是 ID。所以不要通过 btn 你会这样做。 viewModel.action(btn.attr('id'));但是现在您所说的名称也是属性名称,因此是.attr('name')。使用 jsfiddle 演示或按钮样板更新问题。但我 btn.attr('id') 会返回你'取消'
  • 顺便说一句,您采用了哪种实现方式?第一第二还是第三?正如我根据第 3 个给你的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 2016-12-31
  • 1970-01-01
  • 2011-06-10
  • 2020-06-25
  • 1970-01-01
相关资源
最近更新 更多