gpt4 book ai didi

javascript - 主干收集事件未触发。我错过了什么吗?

转载 作者:行者123 更新时间:2023-11-29 16:23:46 26 4
gpt4 key购买 nike

我正在尝试制作一个预加载器,但在第一步就被主干卡住了。我在使用 jquery 和“原始”js 之前构建了一个很好的,基本上发生的是我有一个名为 img/ui 的文件夹和一个服务器端脚本,它只提供该文件夹的 JSON 转储。这个请求是/preload the js,然后将其排队并根据带有超时和错误处理程序的加载事件过程一个一个地加载它们。我正在尝试将其移植到 Backbone。我认为的模式是一个加载 JSON 的集合,为每个 Assets 构建一组模型,然后将一个 View 附加到该集合以显示队列的状态......简单。

但我已经卡住了..首先我必须手动获取 JSON 否则它不会做任何事情..很好..完成,其次即使加载了 JSON 它也不会触发解析方法(或任何其他方法):

var PreloaderCollection = Backbone.Collection.extend({
model:PreloaderModel,
url:"/preload",
events: {
"change":"parse"
},
initialize: function()
{
_.bindAll(this);
this.fetch(this.url);
},
setup: function(args)
{

},
update: function(args)
{

},
parse:function(args){
log(args)
},
remove: function(args)
{

}
});

我真的开始对 Backbone 感到沮丧,这是我的第一个主要项目,尽管阅读了每一个教程并完整地浏览了源代码,但在模式和功能方面似乎存在太多矛盾。

编辑:

这是最后的手段,感觉很脏,但这是我“绕过”这个问题的方法。我基本上用我自己的方法覆盖了 fetch 函数,现在可以了,但是......嗯,

var PreloaderCollection = Backbone.Collection.extend({
url:"/preload",
events: {
"reset":"parse"
},
initialize: function()
{
log("initing preloader collection")
_.bindAll(this);
this.bind("change",this.parse)
this.fetch(this.url);
},
fetch:function(args){
$.getJSON(
args,
this.parse
)
},
setup: function(args)
{

},
update: function(args)
{

},
parse:function(args){
log("parse",args)
},
remove: function(args)
{

}
});

最佳答案

您使用错误的方式绑定(bind)到您的事件:)使用事件的哈希值,您可以在 View 中声明 jquery 需要绑定(bind)到 DOM 中的元素的所有事件。

在您绑定(bind)的模型或集合中重置/更改/错误事件如下:

var myModel = Backbone.Model.extend({});

var myCollection = Backbone.Collection.extend({
model: myModel,
initialize: function() {
this.bind('reset', this.parse, this)
},
parse: function() {
alert('parsing');
}
});

var c = new myCollection({});
c.reset([{name: 'name1'}, {name: 'name2'}]);

在此处查看有关事件绑定(bind)的更多信息:http://documentcloud.github.com/backbone/#Events-bind

查看有关您尝试使用的委托(delegate)事件的更多信息,但仅用于 DOM 元素事件绑定(bind)的 View :http://documentcloud.github.com/backbone/#View-delegateEvents

查看 jsfiddle 的工作版本:http://jsfiddle.net/saelfaer/kt2KJ/1/

关于javascript - 主干收集事件未触发。我错过了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294202/

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