2013-03-06 10 views
6

Ho due pulsanti, che si chiamaCome disabilitare l'evento click utilizzando Knockout?

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

Quale sarà il migliore qui? Posso usare jQuery su $(document).ready? Il problema è che data-bind click disabilita l'altro evento click quando viene premuto e allo stesso modo. Ma quando premo lo stesso pulsante, abilita nuovamente il secondo pulsante.

Quindi quello che sto cercando di dire con tutto il jibberish è che, voglio solo un pulsante abilitato alla volta. È possibile cooperare insieme a KO? E se così, per favore dimmi come. PS: ho visto il sito a eliminazione diretta su enable, ma non capisco. Come dovrei farlo funzionare a pieno?

+0

Per favore pubblica (parti rilevanti di) il tuo modello di vista. – jensgram

risposta

1

si potrebbe aggiungere un osservabile che ha tenuto quale pulsante è stato premuto quindi modificare il click di essere una funzione che controllò il osservabile:

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

si dovrà decidere come si imposta il osservabile però.

3

knockoutjs consentono la funzionalità avrebbe funzionato quando abbiamo il codice proprio come questo

Al iniziale sia i collegamenti attivi. Se fai clic su un collegamento, ne disattiva un altro. Se fai nuovamente clic sul link, abilita l'altro link.

Questa non è la risposta che cosa chiedete .. questa è la risposta di come attivare il lavoro con eliminazione diretta

Si vuole solo un pulsante di abilitazione, allora ci deve essere una certa condizione, ad applicare tali condizioni con questo abilitare vincolante, è tutto risolto problema.

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

Script: -

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 
}; 

Nota: attivare e disattivare vincolante non funziona per l'ancora tag.It lavora per l'input, textarea, Select ..

+0

Senza funzionalità di abilitazione, Mr. Anche la risposta di Paul Manzotti funzionerà sicuramente. – nav0611

+0

Non mi piace l'abilitazione di 'data-bind = ': linkTwo()! =' Clicked'' a tutti, ha detto che non è stato in grado di analizzare questi binding. – WeeklyDad

+0

E l'ho aggiunto nel viewModel corretto, ma è immediatamente quando avvio il sito, tenta di analizzare l'errore di associazione – WeeklyDad

Problemi correlati