2013-11-20 21 views
5
ben dinamik gerektiren ile dataTable yapılandırma seçeneklerini keşfettikten sonra backbone.js

require.js ile jQuery datatable yapılandırılması ve backbone.js

kullanılarak üretilir masamın biri için Jquery datatables eklenti kullanmak isteyen

ile kullanılmıştır. js Ben uygulamalar mükemmel çalışıyor,

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

    }, 

}); 

Bu yapılandırmada kadar Running dosya Bu benim main.js dan bu çözümün

ile geldi ama benim app.js in bu nesneyi kullandıktan sonra normal akışını keser uygulama

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

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

    var initialize = function() { 

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

    } 

    return { 
     initialize : initialize 
    }; 

}); 

Ben kundakçı aşağıdaki hatayı alıyorum

Hata: Senaryo hatası için: i sonra ben

$ olsun benim app.js DataTable dahil etmezseniz dataTable http://requirejs.org/docs/errors.html#scripterror

ve (...) dataTable bir fonksiyon değil Birisi bana burada neyin yanlış olduğunu anlamaya yardımcı olabilir.

cevap

0

dataTables (jquery gibi) zaten AMD uyumludur, Shim konfigürasyonunuzdan çıkarın.

+0

satışa sunulacak Ama nasıl ben gerçekten ihtiyacımız sayfasında kullanılabilir hale do !!! Nerede kullanılırsa kullanıyorum, dataTable bir işlev hatası değil – rkj

+0

@rjk çalışmayı başardınız mı? Eğer öyleyse, –

+2

@MarcelDjaman Ramon'un cevabını benim için nasıl çalıştığını paylaşabilirsiniz. Kısaca, veri yolları modülünün içindeki yollar nesnesi, ** tam olarak ** 'datatables' olmalıdır. –

11

sadece yolları tanımlarında datatables için dataTable anahtarı değiştirmek, zaten bir AMD modülü olduğundan datatables eklenti için konfigürasyon dosyasında sizin requireJS içinde şim yapmak gerek yok, bunun nedeni olduğunu bunun için AMD modülü bu adla tanımlanır, lütfen kaynak kodu here'a bakın. Eğer datatables eklentisi içe aktarırken

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 : "_" 
     } 

    }, 

}); 

Şimdi $("selector").dataTable() fonksiyon

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

    var initialize = function() { 

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

    } 

    return { 
     initialize : initialize 
    }; 

});