KnockoutJS'de bir 'koşullu tıklama' bağlaması oluşturmak istiyorum. Temelde bu, Knockout'ta kullanacağınız gibi standart bir tıklama ciltlemesidir, ancak ekli işlevin yürütülmesi için bir koşulun karşılanması gerekir. Benim durumumda, en iyi seçenek, izin verildiyse standart tıklama ciltlemesini aradığınız özel bir bağlayıcı aracı oluşturmaktır.Standart çağrıyı yap Knockout özel ciltlemeden bağla tıklat
ko.bindingHandlers.safeClick = {
'init': function(element, valueAccessor, allBindingsAccessor, context) {
$(element).click(function() {
if(mycondition == true) {
// call the standard click binding here -> this is the part I don't know
}
});
}
}
bu özel bağlama ile benim standart tıklama bağlamaları tüm değiştirmek istiyor. Bu nedenle, tıklama ciltlemesini doğru şekilde çağırmak önemlidir, böylece HTML'de sağlanan tüm parametreler işleve iletilir. Örneğin: özel bağlama eksik kısmı ile bana yardımcı olur musun
<a href="#" data-bind="click: basevm.gotopage.bind($data, '#homepage')">Home</a>
<a href="#" data-bind="click: itemvm.activateItem">Activate</a>
Bunlar ben çok takdir ediyorum
<a href="#" data-bind="safeClick: basevm.gotopage.bind($data, '#homepage')">Home</a>
<a href="#" data-bind="safeClick: itemvm.activateItem">Activate</a>
tarafından değiştirilmesi gerekir.
ko.bindingHandlers.click.init(element, valueAccessor, allBindingsAccessor, context);
EDIT:
Bu yöntem, koşulunuzu HTML kodunda gözlemlenebilir bir Nakavt olarak ilettiğinizi varsayar. Bunu yapmak istemiyorum. Bunun yerine, eleman her tıklandığında JavaScript kodunu manuel olarak kontrol etmek istiyorum. Bunun nasıl yapılacağı konusunda tavsiyen var mı? –
if if (ko.utils.unwrapObservable (allBindingsAccessor(). Koşulu)) 'yerine ne istediğinizi yazabilirsiniz. Link her tıklandığında değerlendirilecektir. Demo jsfiddle'ım için gözlemlenebilir şartlara ihtiyacım vardı. Bu değiştirilmiş kült görmek: http://jsfiddle.net/w7nKB/2/ – nemesv
Ben normal tıklama ciltleme ve bu özel ciltleme arasındaki sorunu göstermek için bu keman (http://jsfiddle.net/Ed8Fc/) oluşturdu. Tıklama etkinliğini tetikleyen DOM öğesine erişmem gerekiyor. Bunu, normal tıklama ciltlemeyle tamam, ancak safeClick bağlamasının tarayıcı konsolunda bildirilen bir hata olduğunu görüyorsunuz. –