2013-03-06 9 views
6

mam dwa przyciski, które nazywaJak wyłączyć kliknięcie za pomocą Knockout?

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

Co będzie najlepszym tutaj? Czy mogę używać jQuery na $(document).ready? Problem polega na tym, że kliknięcie danych wyłącza inne zdarzenie kliknięcia po naciśnięciu i podobnie. Ale po naciśnięciu tego samego przycisku ponownie włącza drugi przycisk.

To, co próbuję powiedzieć z całym jibberish jest to, że chcę tylko jeden przycisk włączony na raz. Czy można z tym skończyć razem z nokautem? A jeśli tak, proszę powiedz mi, jak. PS: Zajrzałem do strony nokautowej o włączeniu, ale nie rozumiem. Jak powinienem go uruchomić, aby działał w pełni?

+0

Należy opublikować (odpowiednie części) swojego modelu widoku. – jensgram

Odpowiedz

1

Można dodać, że zauważalny odbyło który przycisk został naciśnięty następnie zmienić kliknij, aby mieć funkcję sprawdzenia obserwowalny:

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

Trzeba by zdecydować, jak ustawić obserwowalne chociaż.

3

knockoutjs włączyć funkcję będzie działać, gdy mamy kod tak jak to

przy początkowym oba linki aktywne. Kliknięcie dowolnego linku powoduje wyłączenie innego. Jeśli klikniesz link ponownie, zostanie włączony inny link.

To nie jest odpowiedź na pytanie, o co prosisz .. to jest odpowiedź, jak umożliwić pracę z nokautem

Chcesz tylko jeden przycisk Włącz, a następnie musi być jakiś warunek, stosować te warunki z tym umożliwić wiążące, to wszystko rozwiązało problem.

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

Uwaga: włączyć i wyłączyć wiązania nie będą działać do kotwicy tag.It pracuje dla wejścia, textarea, wybierz ..

+0

Bez funkcji włączania, Pan. Odpowiedź Paula Manzottiego również zadziała na pewno. – nav0611

+0

Nie podoba mi się 'data-bind = 'enable: linkTwo()! =' Clicked'' w ogóle, powiedział, że nie mógł przeanalizować tych powiązań. – WeeklyDad

+0

I dodałem go w viewModel poprawne, ale natychmiast po uruchomieniu witryny, próbuje przeanalizować – WeeklyDad

Powiązane problemy