2015-05-29 2 views
1

Я работал с Require и DataTables до этого, но это мой первый раз, когда вы действительно настраиваете вещи. Я удалил некоторые из чувствительных файлов, вызываемых в коде ниже, но я думаю, что это все, что вам нужно, чтобы помочь.DataTables не инициализируется с использованием RequireJS/Backbone

Я видел смешанные сообщения о том, нужно ли добавлять только минимальный путь JS или вам нужны оба. Поскольку нет ошибок, кажется, что все правильно вызвано. Кроме того, я слышал смешанные сообщения о необходимости прокладки для DataTables. Все ли кажется правильным? У меня есть стандартная таблица в файле handlebars, заполненном json-файлом. Дайте мне знать, если вам нужны те, которые показаны.

Первый раздел кода из файла require.config, последний фрагмент из моего представления для файла handlebars.

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

datatables требует jquery try ading a прокладка с зависимостями –

+0

@NikosM. Я попытался добавить datatables: ["jquery"] и datatables: {deps: ["jquery"]}. Ни работали – elpeterson

ответ

0

Если вы используете последние версии jQuery, Backbone и Underscore, им не нужны прокладки.

jQuery не требуется прокладка с некоторого времени до 1.9.

Проверьте аннотированный источник Backbone и Underscore. Найдите «amd» в обоих источниках, и вы увидите, что они обнаруживают загрузчик AMD и вызывают define, когда присутствует загрузчик AMD, поэтому нет прокладок.

Использование shim, где он не нужен может привести к непредсказуемому поведению и может объяснить проблему, которую вы испытываете.

О, и DataTables не нуждается в прокладке, если вы используете относительно новую версию. Я использую 1.10.2 без прокладки.

+0

Хорошо, я обновлю основу и подчеркиваю материал. Все, что вы можете предложить, почему DataTables не инициализируется в таблице? – elpeterson

Смежные вопросы