gpt4 book ai didi

javascript - Backbone.js: 将 View 、集合、模型分离到不同的js文件中,它们不能相互识别

转载 作者:数据小太阳 更新时间:2023-10-29 05:50:35 25 4
gpt4 key购买 nike

我用Backbone.js创建了一个web应用,所有的 View 、集合和模型都写到一个js文件中,成功了!

现在我想将它们分离到不同的 js 文件中,就像:

<script type="text/javascript" src="js/layermanagemodel.js"></script>       
<script type="text/javascript" src="js/layermanagecollection.js"></script>
<script type="text/javascript" src="js/layermanageview.js"></script>
<script type="text/javascript" src="js/boot.js"></script>

并在 jquery load 中加载模型代码:

$(function(){
//Model
var manageModel = Backbone.Model.extend({
default:{
'selectedId':'unknow'
},
selectLayer:function(uuid){
this.set({"selectedId": uuid});
},
delLayer:function(){

}
});
})

但是 Firebug 告诉我错误:

manageModel is not defined
[Break On This Error]

model: manageModel

在集合文件中

为什么如果将它们分开到不同的文件中,它们不能相互识别?我该如何解决这个问题?或者什么是正确的加载顺序?谢谢

最佳答案

添加函数包装器后:

$(function() {
// ...
})

您引入了新的作用域,并且在这些函数内声明的所有 var 仅在这些函数内可见。您可以通过将它们设为全局(即 window 的属性)来解决这个问题:

$(function(){
window.manageModel = Backbone.Model.extend({
//...
});
});

或者更好的是,引入一个应用程序命名空间:

$(function(){
window.app = window.app || { };
window.app.manageModel = Backbone.Model.extend({
//...
});
});

然后通过app引用事物,比如app.manageModel:

$(function(){
window.app = window.app || { };
window.app.someCollection = Backbone.Collection.extend({
model: app.manageModel,
//...
});
});

关于javascript - Backbone.js: 将 View 、集合、模型分离到不同的js文件中,它们不能相互识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com