2013-11-20 11 views
5

मैं अपने तालिका में से एक है जो गतिशील backbone.jsrequire.js साथ jQuery datatable का विन्यास और backbone.js

का उपयोग कर की आवश्यकता के साथ DataTable विन्यस्त करने के लिए विकल्प तलाश करने के बाद उत्पन्न होता है के लिए jQuery DataTables प्लगइन का उपयोग करना चाहते हैं के साथ प्रयोग। js मैं इस समाधान

यह मेरा main.js से है के साथ बाहर आया फाइल

require.config({ 
    baseUrl : 'js', 
    paths: { 
     jquery: '../../assets/js/libs/jquery/jquery-1.10.2.min', 
     underscore: '../../assets/js/libs/underscore/underscore', 
     backbone: '../../assets/js/libs/backbone/backbone', 
     dataTable : '../../assets/js/libs/jquery/jquery.dataTables.min.js' 
    }, 

    shim : { 

     backbone : { 
      deps : [ "underscore", "jquery" ], 
      exports : "Backbone" 
     }, 

     underscore : { 
      exports : "_" 
     }, 

     dataTable : { 
      deps : ["jquery"], 
      exports : "Datatable" 
     } 

    }, 

}); 

इस विन्यास तक चल रहा है, आवेदन पत्र पूरी तरह से काम करता है, लेकिन मेरी app.js में में इस वस्तु का उपयोग कर के बाद के सामान्य प्रवाह को तोड़ता आवेदन

define([ 
     'jquery','underscore', 'backbone', 'router', 'dataTable' 
     ], 

function($, _, Backbone, Router, Datatable) { 

    var initialize = function() { 

     // calls router.js's initialize() function 
     Router.initialize(); 

    } 

    return { 
     initialize : initialize 
    }; 

}); 

मैं फ़ायरबग में निम्न त्रुटि प्राप्त

त्रुटि: स्क्रिप्ट त्रुटि के लिए: DataTable http://requirejs.org/docs/errors.html#scripterror

और अगर मैं अपने app.js में DataTable शामिल नहीं हैं तो मैं मिल

$ (...)। डेटाटेबल एक फंक्शन नहीं है

क्या कोई यह जानने में मेरी सहायता कर सकता है कि यहां क्या गलत है।

उत्तर

0

डेटाटेबल्स (जैसे jquery) पहले से ही एएमडी घटक है, इसे अपने शिम कॉन्फ़िगरेशन से हटा दें।

+0

हो जाएगा लेकिन यह कैसे मैं इसे पेज जहां मैं सच में इसकी जरूरत पर उपलब्ध करवा सकता हूं !!! जहां भी मैंने इसका इस्तेमाल किया, मुझे डेटा मिलता हैटेबल एक फ़ंक्शन त्रुटि नहीं है – rkj

+0

@rjk क्या आपने इसे काम करने के लिए प्रबंधित किया था? अगर ऐसा है तो आप साझा कर सकते हैं कि आपने –

+2

@MarscelDjaman Ramon का जवाब मेरे लिए कैसे काम किया। संक्षेप में, पथ ऑब्जेक्ट के अंदर डेटाटेबल्स मॉड्यूल की कुंजी ** बिल्कुल ** 'डेटाटेबल्स' होनी चाहिए। –

11

डेटा के लिए आपकी आवश्यकता जेएस कॉन्फ़िगरेशन में शिम करने की आवश्यकता नहीं है क्योंकि पहले से ही एक एएमडी मॉड्यूल है, बस dataTable से datatables पर अपनी पथ परिभाषाओं में कुंजी बदलें, इसका कारण यह है कि इसके लिए एएमडी मॉड्यूल उस नाम से परिभाषित किया गया है, कृपया स्रोत कोड here पर एक नज़र डालें।

require.config({ 
    baseUrl : 'js', 
    paths: { 
     jquery: '../../assets/js/libs/jquery/jquery-1.10.2.min', 
     underscore: '../../assets/js/libs/underscore/underscore', 
     backbone: '../../assets/js/libs/backbone/backbone', 
     datatables : '../../assets/js/libs/jquery/jquery.dataTables.min.js' 
    }, 

    shim : { 

     backbone : { 
      deps : [ "underscore", "jquery" ], 
      exports : "Backbone" 
     }, 

     underscore : { 
      exports : "_" 
     } 

    }, 

}); 

अब जब आप datatables प्लगइन आयात $("selector").dataTable() समारोह उपलब्ध

define(['jquery','underscore', 'backbone', 'router', 'datatables'],  
function($, _, Backbone, Router) { 

    var initialize = function() { 

     // calls router.js's initialize() function 
     Router.initialize(); 

    } 

    return { 
     initialize : initialize 
    }; 

}); 
संबंधित मुद्दे