javascript - Backbone.js - 一个 View 多个模型

标签 javascript backbone.js

我有一个模板需要从两个不同的 API 端点 (URL) 接收数据:cartuser .

我希望这两个端点充当一个模型或集合,以便我可以执行类似 .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});

还有一个演示 http://jsfiddle.net/nikoshr/hm0xc79z/

关于javascript - Backbone.js - 一个 View 多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222650/

相关文章:

javascript - 交互式 d3 邮政编码分区统计表 - WA 州

backbone.js - 在 Backbone Collection 上调用 invoke

javascript - 模板切换 View 的集合。 Backbone .js

javascript - 为什么我的 iframe 的 contentEditable 会被重置?

javascript - AngularJS 中从对象到 ng-repeat 的绑定(bind)指令

javascript - 尝试在不重新加载页面的情况下显示 BMR

javascript - 覆盖 Typescript 声明类型以在 DOM 的 Event 类上声明静态方法

Javascript表格行显示/隐藏

javascript - 为什么我应该使用backbone.js或spine.js

javascript - 无法将 html 元素附加到主干中的 el。