2013-02-26 26 views
5

Tôi đang xây dựng một ứng dụng với backbone.js + require.js. Tôi muốn sử dụng datepicker từ đây trong ứng dụng của tôi: datepickerbootstrap-datepicker không nhận được shimmed với requirejs

Từ trước đến nay không AMD, tôi Shim nó trong requirejs như thế này:

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

     } 

}); 

Bây giờ trong một trong những quan điểm của tôi, tôi gọi datepicker như thế này:

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; 
    }); 

Điều này trả về không xác định trên bảng điều khiển. Tôi đoán rằng thư viện không được nhận đúng cách.

+2

Tôi có cùng một vấn đề. – Ryan

+0

Tôi cũng có cùng một vấn đề. Bạn đã bao giờ tìm thấy một sửa chữa cho điều này? –

Trả lời

0

Nhìn vào nguồn datepicker 's có vẻ như nó không trong bất cứ điều gì xuất khẩu thực tế - đó là lý do tại sao requirejs không thể tìm thấy dt biến toàn cầu để 'kết nối' để (window.dt nếu chạy trong môi trường trình duyệt). Theo trang web của datepicker, nó chỉ thêm chức năng của nó vào đối tượng jQuery, nó không được coi là được sử dụng như một cá thể độc lập. Ví dụ từ số docs page:

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

});

Bạn đã thử một cái gì đó như thế?

Tôi tin rằng không cần thiết phải làm mờ trong trường hợp này.

5

Đây là shim mà tôi sử dụng:

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

cho

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

là jquery-ui cần thiết? – Marek

Các vấn đề liên quan