2013-02-26 1 views
5

Ich baue eine Anwendung mit backbone.js + require.js. Ich möchte Datepicker verwenden, um von hier in meiner Anwendung: datepickerBootstrap-Datepicker nicht mit Requirejs shimmed

Seit seiner Nicht-AMD, i Shim es in requirejs wie folgt aus:

require.config({ 
baseUrl: "appjs", 

paths:{ 
    jquery: '../layout_assets/assets/js/libs/jquery-1.8.2.min', 
    dt: '../layout_assets/plugins/datatables/jquery.dataTables.min', 
    dtPlugins:'../layout_assets/plugins/datatables/dtplugins', 
    dtBootstrap: '../layout_assets/plugins/datatables/dataTables.bootstrap', 
    underscore: '../assets/js/underscore-min', 
    Backbone: '../assets/js/backbone-min', 
    bootstrap: '../assets/js/bootstrap.min', 
    datepicker:'../layout_assets/bootstrap-datepicker' 
    }, 

    shim: { 
     underscore:{ 
      exports:"_" 
     }, 

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

     dt: { 
     deps:['jquery'], 
     exports: "dt" 
     }, 

     dtPlugins: { 
      deps:['jquery','dt'], 
      exports:"dtPlugins" 
      }, 
     bootstrap: { 
     deps:['jquery'], 
     exports:"bootstrap" 

     }, 
     dtBootstrap: { 
      deps: ['dt','jquery'], 
      exports: "dtBootstrap" 
     }, 

     datepicker:{ 
     deps:['jquery','bootstrap'], 
     exports:"datepicker" 
     } 

     } 

}); 

nun in einem meiner Ansichten nenne ich Datepicker wie folgt aus:

define(['Backbone', 
     'underscore', 
     'jquery', 
     'datepicker', 
     'models/reports', 
     'dtBootstrap', 
     'bootstrap', 
     'text!templates/reports/dashboard.html', 
     ],function(Backbone,_,$,dp,report,dtBootstrap,bootstrap,dashboard){ 


     var view=Backbone.View.extend({ 
      el:"#content-wrap", 
      template:_.template(dashboard), 
      render:function(){ 
      this.$("#container-left").html(this.template()); 
      console.log(dp); 
      } 

    }); 
    return view; 
    }); 

Dies gibt undefined auf der Konsole zurück. Ich schätze, die Bibliothek wird nicht korrekt angezeigt.

+2

ich das gleiche Problem haben. – Ryan

+0

Ich habe auch das gleiche Problem. Hast du jemals eine Lösung dafür gefunden? –

Antwort

0

Mit Blick auf datepicker ‚s Quelle sieht es aus wie tut es in der Tat nicht den Export alles - deshalb requirejs nicht die globalen dt Variable finden kann‚connect‘zu (window.dt wenn in Browser-Umgebung ausgeführt werden). Laut der datepicker Website fügt es lediglich seine Funktion zum jQuery-Objekt hinzu, es sollte nicht als eigenständige Instanz verwendet werden. Beispiel von seiner docs page:

$('#dp5').datepicker() 
    .on('changeDate', function(ev){ 
    if (ev.date.valueOf() < startDate.valueOf()){ 
     .... 
    } 

});

Haben Sie so etwas probiert?

Ich glaube, Shimmen ist in diesem Fall nicht notwendig.

5

Dies ist die Scheibe, die ich benutze:

"datepicker" : { 
    deps: ["jquery-ui", "bootstrap"], 
    exports: "$.fn.datepicker" 
} 

für

"datepicker": "lib/datepicker/js/bootstrap-datepicker" 
+0

ist jquery-ui notwendig? – Marek