6

我有两个按钮,称为

<a href='#' data-bind='click: clickActivateSpatialSearch' id='draw_polygon'>
<a href='#' data-bind='click: clickActivateSpatialSearchBox' id='draw_box'>

这里最好的是什么?我可以使用 jQuery$(document).ready吗?问题是数据绑定单击会在按下时禁用另一个单击事件,同样如此。但是当我按下同一个按钮时,它会再次启用第二个按钮。

所以我想说的是,我一次只希望启用一个按钮。这可以与淘汰赛一起合作吗?如果是这样,请告诉我如何。PS:我看过关于启用的淘汰赛网站,但我不明白。我应该如何让它充分发挥作用?

4

2 回答 2

3

当我们有这样的代码时,knockoutjs 启用功能将起作用

最初,两个链接都处于活动状态。如果您单击任何一个链接,它会禁用另一个链接。如果您再次单击该链接,它将启用另一个链接。

这不是您所要求的答案.. 这是启用如何与淘汰赛一起工作的答案

你只需要一个按钮启用,那么必须有一些条件,用这个启用绑定应用这些条件,这样就解决了所有问题。

html:-

<input type="text" data-bind="enable: linkTwo() != 'clicked',click: clickActivateSpatialSearch" id='draw_polygon'/>
<input type="text" data-bind="enable: linkOne() != 'clicked',click: clickActivateSpatialSearchBox" id='draw_box'/>

脚本:-

var self = this;
self.linkOne = ko.observable();
self.linkTwo = ko.observable();

self.clickActivateSpatialSearch = function(){ 
  if(self.linkOne() != 'clicked'){
      self.linkOne('clicked'); 
  } 
  else{
    self.linkOne('notClicked');
  }
// some code here
};

self.clickActivateSpatialSearchBox= function(){
  if(self.linkTwo() != 'clicked'){
      self.linkTwo('clicked'); 
  } 
  else{
    self.linkTwo('notClicked');
  }
// some code here
};

注意:启用和禁用绑定不适用于锚标记。它适用于输入、文本区域、选择..

于 2013-03-06T10:18:28.600 回答
1

您可以添加一个 observable 来保存按下哪个按钮,然后将 click 更改为检查 observable 的函数:

<a href='#' data-bind='click: function() { 
    if(buttonClickedObservable() == 'polygon')
    {
        clickActivateSpatialSearch();
    }' id='draw_polygon'>
<a href='#' data-bind='click: function() { 
    if(buttonClickedObservable() == 'box')
    {
        clickActivateSpatialSearchBox'();
    }' id='draw_box'>

不过,您必须决定如何设置 observable。

于 2013-03-06T10:16:16.413 回答