gpt4 book ai didi

javascript - Backbone 集合在获取时不触发添加事件

转载 作者:行者123 更新时间:2023-12-03 23:29:16 34 4
gpt4 key购买 nike

为了这个,我已经用头撞墙好几个小时了……看了很多页,我觉得我的脚本是正确的,但我的集合没有触发添加事件,在 fetch 方法中传递了 add: true 。我可以绑定(bind)到重置事件,但不会触发添加事件..

型号:

test.Models.AppBlock = Backbone.Model.extend({
defaults: {
AppID: null,
AppName: null,
AppDescription: null
},
idAttribute: "AppID"
});

收藏:

test.Collections.AppBlock = Backbone.Collection.extend({
model: test.Models.AppBlock,
url: ApiPath + "apps/byuser",

Loading: false,

initialize: function () {

},

getAppBlocks: function () {
if (!this.Loading) {
this.Loading = true;
this.fetch({
data: JSON.stringify({
Token: test.Session.Token
}),
add: true, // OMG WTF ?!?!
type: 'POST',
dataType: 'json',
contentType: 'application/json',
cache: false,
success: this.getAppBlocksSuccess,
error: this.getAppBlocksError
});
}
},

parse: function (response) {
return response.Data;
},

getAppBlocksSuccess: function (that, response) {

},

getAppBlocksError: function (that, response) {

}
});

查看:

test.Views.DashboardLatestMain = Backbone.View.extend({
Loading: null,

initialize: function () {
this.template = _.template(test.Templates.DashboardLatestMain);
this.collection.bind('add', this.addAppBlock);
this.render();
},

render: function () {
$('#latest').prepend(this.template);
this.Loading = new test.Views.Loading({
el: '.main'
});
this.collection.getAppBlocks();
},

addAppBlock: function (appBlockModel) {
alert(appBlockModel); // no dice....
var appBlockView = new test.Views.AppBlock({
model: appBlockModel,
el: '#latest .main h3',
After: true
});
}
});

非常感谢任何帮助。

编辑

从 api 返回的数据:

{
"Status":["1","OK"],
"Data":[{"AppID":1,"AppName":"test","AppDescription":"test"},
{"AppID":2,"AppName":"test","AppDescription":"test"}]
}

最佳答案

在 Backbone 0.9.9 集合中,fetch 默认执行了一次 reset,这只会触发 'reset' 事件。在 1.0 中,fetch 执行 update(现在称为 set),并默认触发 'add'、'remove' 和 'change' 事件。

因此,要么更新到 1.0,您现有的代码应该可以工作。或者,将 update:true 添加到您的 fetch 调用中(您不需要 add:true 因为这是默认设置)。

关于javascript - Backbone 集合在获取时不触发添加事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788898/

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