我有两个按钮,名为
<a href='#' data-bind='click: clickActivateSpatialSearch' id='draw_polygon'>
<a href='#' data-bind='click: clickActivateSpatialSearchBox' id='draw_box'>
这里最好的是什么?我可以在$(document).ready
上使用jQuery吗?问题是数据绑定单击在按下时禁用其他单击事件,同样如此。但是当我按下相同的按钮时,它会再次启用第二个按钮。
所以我想用所有的胡言乱语来说,我只希望一次启用一个按钮。这可能与淘汰赛合作吗?如果是这样,请告诉我如何。 PS:我已经看过关于启用的淘汰网站,但我没有得到它。我应该如何让它完全发挥作用?
答案 0 :(得分: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
};
注意:启用和禁用绑定不适用于锚标记。它适用于输入,textarea,Select ..
答案 1 :(得分:1)
您可以添加一个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。