javascript - Requirejs 错误的依赖顺序

标签 javascript jquery json backbone-views

我在 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 除外。

如有任何意见,我们将不胜感激。

最佳答案

我认为您的问题出在您的依赖项的顺序上:

[
        "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

希望对你有帮助

关于javascript - Requirejs 错误的依赖顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514007/

相关文章:

javascript - 为什么 React 在直接改变状态时会更新?

javascript - 如何用 JSON 对象中的图像标签替换图像 URL?

javascript - 如何找到具有数据属性的标签

javascript - 如何将包含 HTML 的 JSON 解析为 HTML

ruby-on-rails - 如何在 JSON 中获取对象数组的某些属性

javascript - 如果我的 props 在 React 中发生变化,如何更新状态以强制重新渲染?

javascript - 如何制作 Twitter 应用程序来向我显示特定趋势的推文?

javascript - 可能很容易修复,但我自己无法修复

javascript - 使用 jQuery 和 PHP 问题的动态依赖选择框

javascript - jQuery/JS : Copy the contents of a class and print it somewhere else on the page