我有一个模板需要从两个不同的 API 端点 (URL) 接收数据:cart
和user
.
我希望这两个端点充当一个模型或集合,以便我可以执行类似 .changedAttributes()
的操作或sync
,或fetch
.
我知道 Backbone 非常宽容,但我真的迷失了。
<小时/>Playground :
我创建了一个代码笔来查看到目前为止我所做的事情:http://codepen.io/anything/pen/AXoBoa
<小时/>期望的结果应该是这样的:
initialize: function(){
var self = this;
collection.fetch({
success: function(data){
self.collection = data;
}
})
},
render: function(){
var self = this;
var source = $("#template").html();
var template = Handlebars.compile(source);
var htmlToRender = template(self.collection.toJSON());
}
最佳答案
您可以创建一个事件集中器来监听其注册的对象并重新触发您捕获的事件。
类似于
var aggregate = _.extend({}, Backbone.Events);
aggregate.register = function(m) {
var self = this;
this.listenTo(m, 'all', function() {
this.trigger.apply(this, arguments);
});
};
然后你就可以像这样使用它
aggregate.on('change', function(m) {
// do what you have to do when one of the models change
console.log('Change on ', m.toJSON());
});
aggregate.on('sync', function(m) {
//same thing for syncs
console.log('sync ', m.toJSON());
});
var m1 = new Backbone.Model({id: 1});
var m2 = new Backbone.Model({id: 2});
aggregate.register(m1);
aggregate.register(m2);
m1.fetch();
m2.set({data: 2});
关于javascript - Backbone.js - 一个 View 多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222650/