Javascript &引用;“主干未定义”;如果我将主干代码放在“外部”$(函数(){})";或$(文件).ready“;
我刚刚开始学习主干,现在我的代码是:Javascript &引用;“主干未定义”;如果我将主干代码放在“外部”$(函数(){})";或$(文件).ready“;,javascript,backbone.js,frontend,Javascript,Backbone.js,Frontend,我刚刚开始学习主干,现在我的代码是: $(function(){ var User = Backbone.Model.extend({ // whatever }); new AppView(); }); 当所有内容都在“$(function(){})”块内时,它工作正常。但我总是习惯于将代码保存在执行块之外的自己的名称空间中 问题是,当我移动任何代码(无论是模型、集合还是视图)时,它都会中断,浏览器日志会警告我“主干未定义” 破坏代码的示例: va
$(function(){
var User = Backbone.Model.extend({
// whatever
});
new AppView();
});
当所有内容都在“$(function(){})”块内时,它工作正常。但我总是习惯于将代码保存在执行块之外的自己的名称空间中
问题是,当我移动任何代码(无论是模型、集合还是视图)时,它都会中断,浏览器日志会警告我“主干未定义”
破坏代码的示例:
var User = Backbone.Model.extend({
// whatever
});
$(function(){
new AppView();
});
抱歉,如果这对于已经了解主干网的人来说是一个非常明显的问题,那么这有什么特别的原因吗?有什么解决办法吗
编辑:作为对文森特的回应,我不确定这是否是他的意思,但我尝试了这个,仍然得到了相同的错误:
var MyInitClass = {
User : Backbone.Model.extend({
defaults : {
name: 'user_name',
email: 'user_email'
}
}),
init : function() {
new this.AppView();
}
};
$(function(){
MyInitClass.init();
});
第二次编辑:我没有像第一次那样手动链接到外部主干js,而是在Gemfile中包含了“主干rails”gem,然后在application.js文件中添加了需要主干和下划线的行。现在一切都很顺利。这只意味着当您尝试执行主干代码时,您的backbone-min.js没有加载 您应该做的和我通常做的是创建一个初始化类,并将
MyInitClass.init()
放入$(function(){})
块中
然后在这个MyInitClass
中,将数据加载到主干模型中,创建它们和相关视图等
通过在$(function(){})
块中执行代码,可以确保主干文件已加载并准备好使用
回答问题编辑:
您需要将模型创建放在init函数中,如下所示:
var MyInitClass = {
init : function() {
var user = Backbone.Model.extend({
defaults : {
name: 'user_name',
email: 'user_email'
}
});
new this.AppView();
}
};
$(function(){
MyInitClass.init();
});
这是我在应用程序中为用户使用的代码类型,例如:
if(!MyAppClass) var MyAppClass = {};
MyAppClass.users = (function($) {
var user;
var initialize = function() {
user = new MyAppClass.Model.User();
renderUser();
};
var renderUser = function() {
var UserView = new MyAppClass.Views.UserView({
model: user
});
};
return {
initialize: initialize
};
})(jQuery);
在文档就绪块中:
$(function(){
MyAppClass.users.initialize()
});
这只意味着在您尝试执行主干代码时没有加载backbone-min.js 您应该做的和我通常做的是创建一个初始化类,并将
MyInitClass.init()
放入$(function(){})
块中
然后在这个MyInitClass
中,将数据加载到主干模型中,创建它们和相关视图等
通过在$(function(){})
块中执行代码,可以确保主干文件已加载并准备好使用
回答问题编辑:
您需要将模型创建放在init函数中,如下所示:
var MyInitClass = {
init : function() {
var user = Backbone.Model.extend({
defaults : {
name: 'user_name',
email: 'user_email'
}
});
new this.AppView();
}
};
$(function(){
MyInitClass.init();
});
这是我在应用程序中为用户使用的代码类型,例如:
if(!MyAppClass) var MyAppClass = {};
MyAppClass.users = (function($) {
var user;
var initialize = function() {
user = new MyAppClass.Model.User();
renderUser();
};
var renderUser = function() {
var UserView = new MyAppClass.Views.UserView({
model: user
});
};
return {
initialize: initialize
};
})(jQuery);
在文档就绪块中:
$(function(){
MyAppClass.users.initialize()
});
这只意味着在您尝试执行主干代码时没有加载backbone-min.js 您应该做的和我通常做的是创建一个初始化类,并将
MyInitClass.init()
放入$(function(){})
块中
然后在这个MyInitClass
中,将数据加载到主干模型中,创建它们和相关视图等
通过在$(function(){})
块中执行代码,可以确保主干文件已加载并准备好使用
回答问题编辑:
您需要将模型创建放在init函数中,如下所示:
var MyInitClass = {
init : function() {
var user = Backbone.Model.extend({
defaults : {
name: 'user_name',
email: 'user_email'
}
});
new this.AppView();
}
};
$(function(){
MyInitClass.init();
});
这是我在应用程序中为用户使用的代码类型,例如:
if(!MyAppClass) var MyAppClass = {};
MyAppClass.users = (function($) {
var user;
var initialize = function() {
user = new MyAppClass.Model.User();
renderUser();
};
var renderUser = function() {
var UserView = new MyAppClass.Views.UserView({
model: user
});
};
return {
initialize: initialize
};
})(jQuery);
在文档就绪块中:
$(function(){
MyAppClass.users.initialize()
});
这只意味着在您尝试执行主干代码时没有加载backbone-min.js 您应该做的和我通常做的是创建一个初始化类,并将
MyInitClass.init()
放入$(function(){})
块中
然后在这个MyInitClass
中,将数据加载到主干模型中,创建它们和相关视图等
通过在$(function(){})
块中执行代码,可以确保主干文件已加载并准备好使用
回答问题编辑:
您需要将模型创建放在init函数中,如下所示:
var MyInitClass = {
init : function() {
var user = Backbone.Model.extend({
defaults : {
name: 'user_name',
email: 'user_email'
}
});
new this.AppView();
}
};
$(function(){
MyInitClass.init();
});
这是我在应用程序中为用户使用的代码类型,例如:
if(!MyAppClass) var MyAppClass = {};
MyAppClass.users = (function($) {
var user;
var initialize = function() {
user = new MyAppClass.Model.User();
renderUser();
};
var renderUser = function() {
var UserView = new MyAppClass.Views.UserView({
model: user
});
};
return {
initialize: initialize
};
})(jQuery);
在文档就绪块中:
$(function(){
MyAppClass.users.initialize()
});
破译代码的例子:“哪里?这不是一个特定于主干网的问题。这几乎可以肯定是一个操作顺序问题。向我们展示如何加载库JS。这是在Rails web应用程序上。我包含主干js的HAML代码是:=javascript\u include\u tag“application”=javascript\u include\u tag”“=javascript\u include\u tag”“=javascript\u include\u tag”“,感谢所有帮助过我的人。我解决了这个问题-请参阅下面我对Vincent的回复。是的,我仍然是一个新手,是的,我仍然在尝试和错误中学习如果你解决了你的问题,你应该发布一个答案,而不是改变你的问题。您可以接受自己的答案,这样做会将您的问题标记为在UI中已回答。”中断代码示例:“何处?这不是特定于主干网的问题。这几乎可以肯定是一个操作顺序问题。向我们展示如何加载库JS。这是在Rails web应用程序上。我包含主干js的HAML代码是:=javascript\u include\u tag“application”=javascript\u include\u tag”“=javascript\u include\u tag”“=javascript\u include\u tag”“,感谢所有帮助过我的人。我解决了这个问题-请参阅下面我对Vincent的回复。是的,我仍然是一个新手,是的,我仍然在尝试和错误中学习如果你解决了你的问题,你应该发布一个答案,而不是改变你的问题。您可以接受自己的答案,这样做会将您的问题标记为在UI中已回答。”中断代码示例:“何处?这不是特定于主干网的问题。这几乎可以肯定是一个操作顺序问题。向我们展示如何加载库JS