gpt4 book ai didi

javascript - 使用主干 View 引用窗口变量

转载 作者:行者123 更新时间:2023-11-30 18:27:56 25 4
gpt4 key购买 nike

现在我升级到 backbone.js 0.9.2 后,在让主干代码正常工作方面遇到了很多问题。我遇到的一个问题是在窗口中引用一个变量。它像下面 0.5.3 中的精简代码一样工作正常

没关系 this.namespace.blaaaa 位基本上我只是有一个 namespace 包装器负责将对象放入 namespace 中。我在这里之后的原因是为什么我不能从页面 View 内部的 PageDisplay View 内部访问 myApp。既然 myApp 是一个窗口变量,我不应该通过直接调用它来访问它。

myApp.js

$(window).load(function() {
myApp = new Page({ el: $("body"), scroll: $(window).scrollTop() });
})

Page.js

this.namespace.Page = Backbone.View.extend({
initialize: function( ) {
this.pageDisplay = new PageDisplay({
el: $("#showBrowser")
});
}
});

PageDisplay.js

this.namespace.PageDisplay = Backbone.View.extend({
initialize: function( ) {
myApp.model.set("bla");
}
});

最佳答案

我猜你的 $(window).load() 处理程序:

$(window).load(function() {
myApp = new Page({ el: $("body"), scroll: $(window).scrollTop() });
})

将失败,因为在调用时范围内没有 Page,并且当您尝试时,myApp 充其量将是 undefined myApp.model.set() 稍后。您在命名空间中定义一个 Page:

this.namespace.Page = Backbone.View.extend({ /*...*/ });

并且由于 this 在该上下文中大概是 window,您将有 namespace.Page 但没有 Page。您将在 namespace.Page 初始化函数中遇到同样的问题:

this.pageDisplay = new PageDisplay({ 
el: $("#showBrowser")
});

您将拥有 namespace.PageDisplay 但没有 PageDisplay

您应该引用 namespace.Pagenamespace.PageDisplay 而不是简单的 PagePageDisplay。我还建议您在定义 View 时删除 this,这只会导致混淆并为错误打开一个窗口。

关于javascript - 使用主干 View 引用窗口变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358464/

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