2013-10-21 5 views
5

मैंने अभी jQuery का उपयोग करने के बजाय माइक्रो पुस्तकालयों को आजमाने की कोशिश की है और मैं बीन के साथ qwery का उपयोग करना चाहता हूं। अगर मैं bean.setSelectorEngine(qwery); सेट करता हूं तो निम्नलिखित क्यों काम नहीं करते?क्या मैं अंडर के बिना बीन के साथ qwery का उपयोग कर सकता हूँ?

bean.on('.masthead', 'click', function() { 
    console.log('click fired'); 
}); 

मैं भी डोम उपयोगिता के लिए bonzo उपयोग कर रहा हूँ, इसलिए मैं यह QWERY के साथ डॉलर के उपयोग करने के लिए तो मैं एक jQuery की तरह फैशन में तत्वों का चयन कर सकते निर्धारित किया है: उदाहरण $('.masthead')

function $(selector) { 
    return bonzo(qwery(selector)); 
} 

यह भी काम नहीं करता है। क्या मुझे निम्नलिखित बीन के साथ उपयोग करने में सक्षम नहीं होना चाहिए?

bean.on($('.masthead'), 'click', function() { 
    console.log('click fired'); 
}); 

शायद मैं बीन दस्तावेज़ीकरण में कुछ महत्वपूर्ण याद कर चुका हूं .. इसे ठीक करने के लिए मुझे क्या करने की ज़रूरत है?

इसके अलावा, अगर मैं संभवतः एन्डर का उपयोग करने से बचने की कोशिश कर रहा हूं, तो मैं अपने बाहरी पुस्तकालयों को कम से कम रखने की कोशिश कर रहा हूं।

उत्तर

7

हां, आप उन सभी पुस्तकालयों को एन्डर के बिना एक साथ उपयोग कर सकते हैं। लेकिन आपको उन पुस्तकालयों के बीच सभी कनेक्शनों को तारित करना होगा।

यह मिलना चाहिए आप आरंभ:

// make Bean and Bonzo use Qwery 
// as their internal selector engine 
bean.setSelectorEngine(qwery); 
bonzo.setQueryEngine(qwery); 

// to use $ instead of bonzo 
function $(selector, root) { 
    return bonzo(qwery(selector, root)); 
}; 

// $() will return a bonzo object 
// so if you want to be able to use 
// bean's methods on the bonzo object 
// like $().on() 
// you are going to have to extend bonzo 
bonzo.aug({ 
    on: function (eventName, callback) { 
    return this.each(function (elem) { 
     return bean.on(elem, eventName, callback); 
    }); 
    }, 

    // do the same for bean's other methods (fire, off, etc) 
}); 

// now you should be able to do this: 
$('.masthead').on('click', function() { 
    console.log('click fired'); 
}); 

आशा है कि मदद करता है! :)

+0

आपको बहुत धन्यवाद @ जॉनी, मैं इसे आजमाउंगा – Zander

1

बस झुकने के लिए, मैंने ऊपर जॉनी के उदाहरण को लिया और इसे थोड़ा और सामान्य बना दिया क्योंकि मुझे एक ही समस्या थी। इस उदाहरण CoffeeScript + अंडरस्कोर-योगदान में है, लेकिन सामान्य विचार है कि आप बहस में चालाकी करके आप एक लूप में यह कर सकते हैं हाथ से हर बीन समारोह रैप करने के लिए की जरूरत नहीं है, यह है:

# Setup Qwery/Bonzo 
    window.$ = (selector, root) -> 
    bonzo qwery(selector, root) 

    # Glue Bean event handling into Bonzo/Qwery 
    events = 
    clone : -> 
     args = _.toArray arguments 
     bean.clone.apply null, args 

    _.each ['on','one','off','fire'], (ev) -> 
    events[ev] = -> 
     args = _.toArray arguments 
     this.each (elem) -> 
     bean[ev].apply null, _.cons(elem, args) 

    bonzo.aug events 

यह आशा है कि भविष्य में किसी की मदद करता है।

संबंधित मुद्दे

 संबंधित मुद्दे