2016-11-21 17 views
0

Я пытаюсь загрузить элемент управления jQuery под названием fancytree, и этот элемент управления зависит от jquery-ui. Я получаю сообщение о том, что он не загрузил jquery-ui из пути, который я дал. Fancytree также зависит от другого файла, называемого fancytree.table.ошибка загрузки jquery-ui in require.js config для плагина fancytree

Моя структура каталогов, как этот

js 
    /app 
     .... 
    /lib 
     /jquery 
     /underscore 
     /backbone 
    /vendor 
     /jquery-ui 
     /fancytree 

Ошибка:

jquery.js:2 Uncaught Error: Fancytree assertion failed: Fancytree requires jQuery UI (http://jqueryui.com)(…) 

конфигурации:

require.config({ 
    // The shim config allows us to configure dependencies for 
    // scripts that do not call define() to register a module 

    paths: { 
     'jquery': '../lib/jquery/jquery', 
     'underscore': '../lib/underscore/underscore', 
     'backbone': '../lib/backbone/backbone',  
     'text': '../lib/text/text', 
     'jquery-ui': '../vendor/jquery-ui/jquery-ui', 
     'fancytree': [  
      '../vendor/fancytree/fancytree', 
      '../vendor/fancytree/fancytree.table' 
     ],  
    }, 
    shim: { 

     underscore: { 
      exports: '_' 
     }, 
     backbone: { 
      deps: [ 
       'underscore', 
       'jquery' 
      ], 
      exports: 'Backbone' 
     }, 
     'jquery-ui': { 
      exports: "$", 
      deps: ['jquery'] 
     },  
    }, 
    baseUrl: '/js/app', 

}); 

вид:

define(['jquery-ui', 'fancytree', 'require'], function(ui, fancytree, require){ 

    'use strict'; 

    var $ = require('jquery'), 
     _ = require('underscore'), 
     Backbone = require('backbone'), 
     tpl = require('text!templates/categories.html'), 
     template = _.template(tpl); 


    return Backbone.View.extend({ 
     el: $('#tree'), 
     initialize: function() { 

      this.listenTo(this.collection, 'reset add change remove', this.render, this); 
      this.collection.fetch(); 
     }, 
     initFancyTree: function() { 
      console.log('tree'); 
      $('#fancytree').fancytree(); 

     }, 
     render: function() {     
      this.$el.html(template()); 
      //this.initFancyTree(); 
      return this; 
     } 
    }); 
}) 

ответ

0

ошибка происходит от line 85 of Fancytree:

_assert($.ui, "Fancytree requires jQuery UI (http://jqueryui.com)"); 

Чтобы решить, что добавить подкладку для fancytree:

'fancytree': { 
    deps: ['jquery-ui'] 
}, 

Это необходимо потому, что Fancytree не определен как модуль и зависит от глобалов. В большинстве библиотек сейчас используется что-то вроде UMD (Universal Module Definition).

+0

Привет, вам нужна помощь, но я получаю еще одну ошибку, связанную с шаблоном, который загружается в представление, ошибка: Ошибка не указана: имя модуля «text! Templates/categories.html_unnormalized2» еще не загружено для контекста – ONYX

+0

это связано с файлом text.js – ONYX

+0

@ONYX Это еще одна проблема, не связанная с этой нитью. Попробуйте отладить это самостоятельно, тогда, если все остальное не сработает, вернитесь и спросите о SO. –