2013-03-13 2 views
2

Я использую Магистраль с Менеджером макетов и RequireJS.Требуется зависимость только при загрузке базового представления

View1 зависит от 2 зависимостей, как видно ниже. Приложение также имеет аналогичный вид с именем View2, который зависит только от `jquery.fileupload ', в отличие от View1, который имеет 2 deps.

define(['jquery.fileupload', 'jquery.fileupload-ui'], function (dep1, dep2) { 

    var View1 = Backbone.View.extend({ 

     ... 

    }); 

    return View1; 

}); 

Проблема заключается в том, что «jquery.fileupload-щ» (вторая зависимость), как представляется, погруженных/оценивали requireJS, даже если я не посещаю вид, что зависит от него, и что вызывает некоторые ошибки плагинов (Я использую базовый плагин fileupload в одном представлении и расширенный плагин для загрузки файлов в другом представлении). Похоже, что define() предварительно загружает модули сразу.

Как я могу избежать загрузки второй зависимости при инициализации приложения и загрузить ее только в моем представлении? Я думаю, что я мог бы потребовать() вызов в define для View1, , но я не уверен, как тогда я могу вернуть значение, если вызовы вложены.

+2

Require.js должен загружать представление лениво, поэтому, если вы не создадите экземпляр View1 к моменту использования View2, у вас не должно быть проблем. Вам лучше сосредоточиться на ошибках плагина, которые вы получаете и решить, однако, может быть, вы можете опубликовать его часть здесь? – snedkov

ответ

0

Каждый раз, когда вы загружаете модуль view1, загружается «jquery.fileupload-ui». Если вам нужен только этот модуль в некоторых случаях, когда вы загружаете модуль 1, вы можете иметь view1 require() в 'jquery.fileupload-ui', только если достигнут определенный путь к коду.

Вы можете сделать это, добавив require(['jquery.fileupload-ui'], function(jqui){...}); определенным методом в пределах view1, где вам нужна библиотека.

Я не уверен, что это отвечает на ваш вопрос, но я думаю, что это возможно.

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