2013-03-06 6 views
6

Ben burada en iyi ne olacağı Knockout kullanarak tıklama olayını nasıl devre dışı bırakabilirim?

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

iki düğme, denir hangi? JQuery'yi $(document).ready üzerinde kullanabilir miyim? Sorun, veri bağlama tıklaması basıldığında ve benzer şekilde diğer tıklama olayını devre dışı bırakır. Ama aynı düğmeye bastığımda, ikinci düğmeyi tekrar bir kez daha etkinleştirir.

Tüm jibberish ile söylemeye çalıştığım şey, tek seferde tek bir tuşun etkin olmasını istiyorum. Nakavt ile birlikte çalışmak mümkün mü? Ve eğer öyleyse lütfen nasıl olduğunu söyleyin. Not: Etkinleştirme hakkında knockout sitesine baktım ama anlayamıyorum. Tamamen çalışmaya nasıl başlamalıyım?

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

Sen olsa gözlemlenebilir ayarlamak nasıl karar olurdu:

+0

Lütfen görünüm modelinizi gönderin (ilgili bölümleri). – jensgram

cevap

1

Ardından preslenmiş gözlemlenebilir kontrol işlevi olmak için tıklayın değiştirmek hangi düğme düzenlenen dair bir gözlemlenebilir ekleyebilir.

3

knockoutjs biz sadece aktif her iki bağlantı da ilk başta bu

gibi kod varken çalışacak işlevselliği etkinleştirmek. Herhangi bir bağlantıyı tıklarsanız, başka birini devre dışı bırakır. Bağlantıyı tekrar tıklatırsanız, diğer bağlantıyı etkinleştirir.

Bu, bu, sadece tek bir düğmeye etkinleştirmek istediğiniz

ardından bazı koşul olmalıdır nakavt ile çalışmalarını sağlayacak bu etkinleştirmek olanlar koşulu uygulamak nasıl cevap size .. Ne istediğine cevap değil Bağlama, hepsi sorun çözüldü.

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

Senaryo: -

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

Not: etkinleştirmek ve giriş, textarea, Seç için çalışır tag.It çapa için çalışmaz bağlayıcı devre dışı ..

+0

İşlevsellik etkinleştirilmeden Bay. Paul Manzotti cevabı da kesin olarak çalışacaktır. – nav0611

+0

Veri-bind = 'enable gibi değil: linkTwo()! =' Clicked ', bu bağları ayrıştıramadığını söyledi. – WeeklyDad

+0

Ve ben viewModel doğru ekledim, ama siteyi başlattığımda anında, bu ayrıştırmak için çalışır, tek tırnaklar nedeniyle – WeeklyDad