如何在启动之前引用javascript窗口元素
How can you reference to javascript window element before initianization?
这个例子是从骨干目录演示应用程序中借来的https://github.com/ccoenraets/backbone-directory/blob/master/web/js/utils.js#L11
// The Template Loader. Used to asynchronously load templates located in separate .html files
window.templateLoader = {
load: function(views, callback) {
var deferreds = [];
$.each(views, function(index, view) {
if (window[view]) {
deferreds.push($.get('tpl/' + view + '.html', function(data) {
window[view].prototype.template = _.template(data);
}, 'html'));
} else {
alert(view + " not found");
}
});
$.when.apply(null, deferreds).done(callback);
}
};
您可以使用字符串数组 [views] 和 [回调] 函数初始化它。
我的问题是,如果(据我所知(以前没有初始化,如何检查 window[view](单击上面的链接到代码中的确切位置(?如果我不准确,请在评论中写下。
如果我正确理解了你的问题,那么当你调用templateLoader.load
时,你会传入 2 个参数; views
和callback
.我们可以假设views
是一个数组,因为我们随后使用 jQuery .each()
方法遍历该数组。对.each()
的回调将传递与当前迭代对应的 views
数组的元素。该参数名为 view
。
因此view
是存储在views
数组中的任意值。然后,我们尝试查找具有与 view
的值匹配的标识符的 window
属性。如果view === "james"
我们正在寻找window.james
.
如果您查看该应用程序中的某些视图,您将看到它们的定义如下:
window.ContactView = Backbone.View.extend({
// Some methods
});
所以ContactView
是 window
的属性,我们可以像下面这样调用templateLoader.load
来加载该模板:
templateLoader.load(["ContactView"], someCallbackFn);
你可以看到它在main.js中实际被调用的位置。
因此,实际发生的是一堆window
属性在各种其他文件中定义,然后由模板加载器加载,通过将标识符数组传递给它。
相关文章:
- 为什么我可以引用Javascript中尚未定义的变量
- 有没有一种方法可以通过只引用JavaScript来执行代码
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- 引用Javascript中的索引集合
- 通过引用Javascript中的另一个函数来传递对象方法
- 如何从onclick字符串中引用javascript对象函数
- 在jquery事件中引用javascript对象
- 通过动态创建数组名称在单击函数中引用 javascript 数组
- 引用javascript嵌入资源,但intellisense没有'我什么也不展示
- 对象属性引用JavaScript中的其他对象属性
- 引用JavaScript变量
- 如何通过引用(javascript)从数组中删除对象
- 我的无引用 JavaScript 对象存在在哪里以及存在多长时间
- 引用javascript对象内的另一个字段
- 如何在启动之前引用javascript窗口元素
- Google Drive是否不再允许从其他网站引用JavaScript文件
- XUL不引用javascript文件
- 我们可以在浏览器会话中跨网页引用 JavaScript 变量吗?
- 如何查找哪些ASPX文件实际引用JavaScript文件
- 从 Jasmine 测试中引用 JavaScript 文件