Требуется неверный порядок зависимостей - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть переменная, сохраненная в js-файле: Subcategories.js.Примерно так (но на самом деле намного, намного больше):

define({
    subcategories: { 
        "Category1":
        [
            "Subcategory1-1", "Subcategory1-2", "Subcategory1-3"
        ],
        "Electrical":
        [
            "Subcategory2-1", "Subcategory2-2", "Subcategory2-3", "Subcategory2-4"
        ],
    },
    getSubcategories: function () {
        return this.subcategories;
    }
});

Мне удалось успешно отправить переменную в SomethingController.js следующим образом (скопированы только части необходимого кода ниже):

define(
	[
           "underscore",
           "base/Controller",
           "views/SomethingView",
           "collections/SomethingCollection",
           "helpers/Subcategories",
	], 
	function(_, Controller, SomethingView, SomethingCollection, Subcategories) {
		var subcategory = null,
		
		var SomethingController = Controller.extend({
			show_results: function(collection, resp) {
				var data = { 
					subcategories: Subcategories.getSubcategories(),
				};
        ...

Но когда я пытаюсь импортировать переменную в SomethingView.js, это работает, только если я снова использую весь объект json:

define(
	[
		"jquery",
		"backbone",
		"has/form",
		"has!input-attr-placeholder?:jqueryui/placeholder",
		"scripts/libs/jquery.tmpl.js",
		"helpers/Subcategories",
	], 
	function( $, Backbone, viewTemplate, has, Subcategories) {
		
		var SomethingItemsView = Backbone.View.extend({
			el: $("#main-section"),
			template: viewTemplate,
			events: {
				"click #some_button" : "change_some_page",
			},
			something_items: function( event ) {
				event.preventDefault();
				var somethingCategory = $("#some_selector");
				var subcategories = {// entire json object
        }
        var somethingSubcategory =  subcategories[somethingCategory];
        ...

Я пробовал var subcategories = Subcategories.getSubcategories(), Subcategories.subcategories и все виды вещей.Потрачено совсем немного времени на что-то такое маленькое.Я озадачен тем, почему это не работает, и я не хочу, чтобы весь объект был жестко запрограммирован там.

Я делаю некоторые изменения во внешнем интерфейсе существующего веб-сайта, поэтому обратите внимание, что я не могу изменить структуру любого из этих файлов, кроме, может быть, Subcategories.js.

Любое мнениебудет оценена.

1 Ответ

0 голосов
/ 26 сентября 2018

Я думаю, что ваша проблема исходит из порядка ваших зависимостей:

[
        "jquery",
        "backbone",
        "has/form",
        "has!input-attr-placeholder?:jqueryui/placeholder",
        "scripts/libs/jquery.tmpl.js",
        "helpers/Subcategories",
    ], 
    function( $, Backbone, viewTemplate, has, Subcategories) {

Она должна быть в том же порядке. Подкатегории - шестой и последний аргумент, но у вас есть только пять входных данных.

jquery => $
backbone => Backbone
has/form => viewTemplate
has!... => has
scripts/libs/jquery.tmpl.js => Subcategories
helpers/Subcategories => OUPS NOTHING O_O

Надеюсь, это поможет

...