我有一个变量保存在js文件中:子类别.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
和各种各样的东西。为这么小的事情浪费了相当多的时间。我很困惑为什么它不起作用,我不想在那里硬编码整个对象。
我正在对现有网站的前端进行一些更改,因此请注意,我无法更改任何这些文件的框架,除了子类别.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
希望对你有帮助