骨干:视图不更新(重置事件)
Posted
技术标签:
【中文标题】骨干:视图不更新(重置事件)【英文标题】:Backbone : view doesn't update (reset event) 【发布时间】:2013-04-08 14:25:01 【问题描述】:我目前正在使用 BackboneJS 通过主干模型从我的数据库中获取数据。
问题是我的应用程序没有触发我的重置事件,即使我的获取执行得很好,我的数据也没有显示在屏幕上。 如果我在控制台中执行 app.messages.toJSON(),我的数据会按要求返回。
你有什么想法吗?这是我的代码
var app = window.app = ;
// APP HERE
// Model
app.Message = Backbone.Model.extend(
url : 'messages'
);
app.message = new app.Message;
// Collection
app.Messages = Backbone.Collection.extend(
model : app.Message,
url : 'messages'
);
// Views
app.messages = new app.Message();
app.messages.fetch();
app.ListView = Backbone.View.extend(
template : Handlebars.compile($('#template-list').html()),
initialize : function()
_.bindAll(this, 'render');
//this.collection.on('reset', this.render);
,
render : function()
this.$el.html(this.template(
collection : this.collection.toJSON()
));
return this;
);
我要咬牙切齿了。
西蒙
编辑
毕竟我有这些代码
app.Router = Backbone.Router.extend(
routes:
'*path' : 'home'
,
home: function()
this.views = ;
this.views.list = new app.ListView(
collection : app.messages
);
$('#list-shell').empty().append(this.views.list.render().el);
);
app.router = new app.Router();
Backbone.history.start(pushState : true);
Backbone.emulateJSON = true;
【问题讨论】:
类似***.com/questions/15603107/… ? 或者你在获取之后创建你的视图(这可能已经结束)? 我看不到你在哪里实例化你的ListView
。在这里,您只是定义了ListView
“类”。
@nikoshr : 已经试过了,不行:/
如果我使用在文件中创建的对象,一切正常,我很确定它来自重置,但我不知道问题出在哪里:/
【参考方案1】:
app.messages = new app.Message();
我想这只是你在写问题时犯的一个错误。
至于问题本身,如果您使用的是 Backbone 1.0,如果您想触发 reset event
,则必须使用 reset flag
。
此外,如果您添加的代码确实是在第一个代码之后,那么您是在在创建路由器之前获取数据,因此是视图。即使获取方法是异步的,您也无法控制您在此处执行的操作。
【讨论】:
以上是关于骨干:视图不更新(重置事件)的主要内容,如果未能解决你的问题,请参考以下文章