2015-01-15 10 views
7

के साथ कोई फ़ंक्शन नहीं है, मैं अपनी निर्भरताओं को लोड करने के लिए RequJS का उपयोग कर रहा हूं।

requirejs.config({ 
    baseUrl: "/js/dist", 
    paths: { 
    jquery: "../bower_components/jquery/dist/jquery.min", 
    bootstrap: "../bower_components/bootstrap/dist/js/bootstrap.min", 
    typeahead: "../bower_components/bootstrap3-typeahead/bootstrap3-typeahead.min", 
    validator: "../bower_components/bootstrapvalidator/dist/js/bootstrapValidator.min", 
    openlayers: "../vendor/openlayers/OpenLayers" 
    }, 
    shim: { 
    bootstrap: { 
     deps: ["jquery"] 
    }, 
    validator: { 
     deps: ["bootstrap"] 
    }, 
    openlayers: { 
     exports: "OpenLayers" 
    } 
    } 
}); 

और अपने मुख्य आवेदन फाइल का एक हिस्सा:

यहाँ मेरी कॉन्फ़िग फ़ाइल है

define(["jquery", "bootstrap", "openlayers", "./popup", "typeahead"], function($, Bootstrap, OpenLayers, Popup) { 
    (...) 
    $("#textSearch").typeahead("destroy"); 
    (...) 
}); 

Firebug के साथ निरीक्षण करने से मैं देख सकता हूँ कि सभी निर्भरता लोड किए गए हैं। "TypeError: $(...).typeahead is not a function"

मैं इस त्रुटि को समझ नहीं सकता, सभी निर्भरता के बाद से (ताकि Typeahead करता है) लोड किए गए हैं: लेकिन मेरे खोज पाठ बॉक्स पर typeahead() बुला निम्न संदेश आउटपुट।

क्या आप मेरी मदद कर सकते हैं? अग्रिम धन्यवाद

+0

एक ही त्रुटि प्राप्त करने के बाद, सब कुछ करने की कोशिश की। एक पुराने संस्करण पर वापस लौटा, 0.9.3 और यह इसे काम करने में कामयाब रहा। – Frisbetarian

उत्तर

6

टाइपहेड का आप किस संस्करण का उपयोग कर रहे हैं?

यदि यह 0.11.1 है:

Typeahead के वर्तमान संस्करण (संस्करण 0.11.1) गलत मॉड्यूल परिभाषा की वजह से requirejs के साथ असंगत है, यहाँ देखें: https://github.com/twitter/typeahead.js/issues/1211

RequireJS docs से :

मॉड्यूल नाम के लिए उपयोग किए जाने वाले पथ में एक्सटेंशन शामिल नहीं होना चाहिए, क्योंकि पथ मैपिंग निर्देशिका के लिए हो सकती है। पथ मैपिंग कोड पथ पर मॉड्यूल नाम मैप करते समय .js एक्सटेंशन स्वचालित रूप से जोड़ देगा।

लाइब्रेरी अपडेट होने तक एक अस्थायी कामकाज बदलना है जहां पुस्तकालय इसकी एएमडी संगतता को निर्धारित करता है।

फ़ाइल एक्सटेंशन को छोड़ा जाना चाहिए या अन्यथा आवश्यकता है जेएस पथ को एक पूर्ण पथ मानने पर विचार करेगा।

बदलें:

define("typeahead.js", [ "jquery" ], function(a0) { 

रहे हैं:

define("typeahead", [ "jquery" ], function(a0) { 

उम्मीद है कि जल्द ही पुस्तकालय अद्यतन किया जाएगा, इस बीच, उम्मीद है कि इस मदद करता है।

+0

यह मेरे लिए काम नहीं करता है, यहां तक ​​कि ब्लडहाउंड और टाइपहेड को अलग से लोड करने के साथ भी। क्या आप किसी अन्य कामकाज को जानते हैं? –

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