我想做的是调用数据库,然后以 HTML 形式显示结果。我一切正常(数据从数据库返回得很好),除了我无法弄清楚如何显示数据。
我知道fetch()
是异步的,但我不确定如何将其连接到我的集合视图中。这是我的骨干:
(function() {
window.App = {
Models: {},
Collections: {},
Views: {},
Router: {}
};
window.template = function(id) {
return _.template( $('#' + id).html() );
};
App.Models.Main = Backbone.Model.extend({
defaults : {
FName: ''
}
});
App.Collections.Mains = Backbone.Collection.extend({
model: App.Models.Main,
initialize: function(mains) {
this.fetch({success: function(main) {
$('#web-leads').html(main);
}});
},
url: '../leads/main_contact'
});
App.Views.Mains = Backbone.View.extend({
tagName: 'ul',
render: function() {
var ul = this.collection.each(this.addOne, this);
return ul;
},
addOne: function(main) {
var mainC = new App.Views.Main({ model: main});
this.$el.append(mainC.render().el);
return this;
}
});
App.Views.Main = Backbone.View.extend({
tagName: 'li',
template: template('mainContactTemplate'),
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
main = new App.Views.Main();
mains = new App.Collections.Mains(main);
})();
我需要能够打电话$('#web-leads').html()
返回值mains
。我怎么做?
Backbone 中此类事情的一般模式是:
- 创建模型或集合
- 将该模型/集合传递给视图
- 该视图在模型/集合上注册一个事件处理程序
- 模型/集合触发 AJAX 请求(可能是响应
fetch
call)
- 视图的事件处理程序被触发
- 视图的事件处理程序更新页面
因此,由于 mu 太短,建议您最好的选择是遵循此模式并让您的视图将处理程序绑定到您的集合reset
event.
不过值得一提的是reset
并不总是您想要绑定的事件。例如,您可能不想响应 AJAX 请求,除非它更改了模型的属性“X”。在这种情况下,您可以改为绑定change:X
,然后只有当 AJAX 响应更改 X 时才会触发您的处理程序。
要查看所有可能的选项,请参阅:
http://documentcloud.github.com/backbone/#Events-catalog http://documentcloud.github.com/backbone/#Events-catalog
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)