5

backbone.js + require.js でアプリケーションを構築しています。アプリケーションでここから datepicker を使用したい: datepicker

非 AMD であるため、requirejs で次のようにシムします。

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

        }

});

今、私のビューの1つで、次のようにdatepickerを呼び出します:

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

これにより、コンソールで undefined が返されます。ライブラリが適切に調整されていないと思います。

4

2 に答える 2

5

これは私が使用するシムです:

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

為に

"datepicker": "lib/datepicker/js/bootstrap-datepicker"
于 2014-05-15T17:37:20.777 に答える
0

のソースを見るとdatepicker、実際には何もエクスポートしていないように見えます。そのため、 「接続」するrequirejsグローバル変数が見つかりません(ブラウザ環境で実行されている場合)。のウェブサイトによると、その機能を jQuery オブジェクトに追加するだけで、スタンドアロン インスタンスとして使用することは想定されていません。ドキュメントページの例:dtwindow.dtdatepicker

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

});

そのようなことを試しましたか?

この場合、シミングは必要ないと思います。

于 2013-02-26T10:24:31.763 に答える