DataTables未使用RequireJS / Backbone进行初始化

时间:2015-05-29 15:52:16

标签: jquery backbone.js requirejs datatables handlebars.js

之前我曾使用过Require和DataTables,但这是我第一次真正开始设置。我已经删除了下面代码中调用的一些敏感文件,但我认为这是你们需要帮助的所有内容。

我看到有关是否需要添加min JS路径或是否需要两者的混合消息。因为没有错误,似乎所有东西都被正确地调用了。另外,我听说过有关需要DataTables垫片的混合信息。一切看起来都对吗?我在一个手柄文件中有一个标准表,其中填充了一个json文件。如果你需要那些,请告诉我。

第一部分代码来自require.config文件,最后一部分来自我的把手文件视图。

requirejs.config({
  // baseUrl: "js",
  paths: {
    backbone: "bower_components/backbone/backbone",
    jquery: "bower_components/jquery/dist/jquery",
    jqueryBridget: "bower_components/jquery-bridget/jquery.bridget",
    jqueryui: "bower_components/jquery-ui/jquery-ui",    
    modernizr: "bower_components/modernizr/modernizr",
    datatables: "bower_components/datatables/media/js/jquery.dataTables.min"
  },
  shim: {
    underscore: {
      exports: "_"
    },
    jquery: {
      exports: "$"
    },
    modernizr: {
      exports: "Modernizr"
    },
    backbone: {
      deps: ["jquery", "underscore"],
      exports: "Backbone"
    }

  }
});

define(["marionette", "hbs!apps/project/templates/components/project-funds/project-funds-performancetable", "datatables"],
  function (Marionette, projectFundsPerformanceTableTemplate, DataTables) {
    var ProjectFundsPerformanceTableView = Marionette.ItemView.extend({
      template: projectFundsPerformanceTableTemplate,
      initialize: function () {
        this.deferred = this.model.fetch({
          reset: true, 
          // dataType: "jsonp",
          success: (function () {
              // alert(' Service request success: ');              
          }), 
            error: (function (e) {
              // alert(' Service request failure: ' + e);
          }),
          complete: (function (e) {
              // alert(' Service request completed ' + e);               
          })
        });
        this.model.on("reset", this.render);
      },
      onShow: function(){
        $('#ce--funds--performanceTable').DataTable();
      }
    });
    return ProjectFundsPerformanceTableView;
  });

1 个答案:

答案 0 :(得分:0)

如果您使用的是最新版本的jQuery,Backbone和Underscore,则它们不需要填充程序。

jQuery从1.9之前的某个时间开始就不需要垫片了。

检查BackboneUnderscore的带注释来源。在两个源中搜索“amd”,你会看到他们检测到AMD加载器并在AMD加载器出现时调用define,所以没有垫片。

使用不需要的shim 可以导致未定义的行为,而可以解释您遇到的问题。

哦,如果您使用的是相对较新的版本,DataTables也不需要垫片。我没有垫片就使用1.10.2。