Ken*_*son 2 javascript backbone.js
我一直在墙上撞了好几个小时......看了很多页面,我觉得我的脚本是正确的,但是我的收藏品并没有触发add事件加上:true传入获取方法.我可以绑定到重置事件,但add事件不会触发..
模型:
test.Models.AppBlock = Backbone.Model.extend({
defaults: {
AppID: null,
AppName: null,
AppDescription: null
},
idAttribute: "AppID"
});
Run Code Online (Sandbox Code Playgroud)
采集:
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
视图:
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
});
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
编辑
从api返回的数据:
{
"Status":["1","OK"],
"Data":[{"AppID":1,"AppName":"test","AppDescription":"test"},
{"AppID":2,"AppName":"test","AppDescription":"test"}]
}
Run Code Online (Sandbox Code Playgroud)
在Backbone 0.9.9中,默认情况下收集fetch了一个reset,它只触发了'reset'事件.在1.0中,fetch执行update(现在称为set),并默认触发'add','remove'和'change'事件.
因此,要么更新到1.0,您的现有代码应该工作.或者,添加update:true到您的fetch通话中(您不需要,add:true因为这是默认设置).
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |