6

と呼ばれる2つのボタンがあります

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

ここで最高のものは何ですか?でjQueryを使用できます$(document).readyか? 問題は、データバインドクリックが押されたときに他のクリックイベントを無効にすることです。しかし、同じボタンを押すと、2番目のボタンが再び有効になります。

だから私が言いたいのは、一度に 1 つのボタンだけを有効にしたいということです。ノックアウトとの連携は可能ですか?もしそうなら、その方法を教えてください。PS: ノックアウト サイトで enable について調べましたが、わかりません。完全に機能させるにはどうすればよいですか?

4

2 に答える 2

3

このようなコードがある場合、knockoutjs の有効化機能が機能します。

最初は両方のリンクがアクティブです。いずれかのリンクをクリックすると、別のリンクが無効になります。もう一度リンクをクリックすると、他のリンクが有効になります。

これはあなたが求める答えではありません..これは、ノックアウトで作業を可能にする方法の答えです

ボタンを1つだけ有効にしたい場合は、いくつかの条件が必要です。この有効なバインディングでそれらの条件を適用すると、すべての問題が解決します。

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

どのボタンが押されたかを保持するオブザーバブルを追加し、クリックをオブザーバブルをチェックする関数に変更できます。

<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'>

ただし、オブザーバブルをどのように設定するかを決定する必要があります。

于 2013-03-06T10:16:16.413 に答える