【发布时间】:2016-10-26 20:51:32
【问题描述】:
目前我正在摆弄 Marionette 和 Backbone(因为我必须这样做)。我有一个实体列表:CompositeView 和 ItemViews,每个 ItemView 都有一个模型,其中包含 firstname 和 lastname 之类的数据。
在每个ItemView 中都有一个链接,它将通过 AJAX(另一个端点!)捕获 ItemView 的新数据,并且应该使用附加数据列表更新视图,例如:[{"id": 1, "foo": "this is soo bar"}, {"id": 2, "foo": "a little bit of baz"}]。该数据应该随后呈现到视图中(并且可以通过单击再次删除)。
去这里最好的方式是什么?在ItemView 中添加第二个模型或将新数据添加到现有视图?还是完全不同的东西?我感谢每一个有用的提示!
我的解决方案(有点)
这是我最终得到的结果:单击附加数据的链接时,关联的 ItemView 实例化了我定义的 Backbone.Collection 对象。该集合包含端点的 URL。然后,我调用collection.fetch() 方法并使用Underscore 呈现该集合,如下所示(大致):
var tpl = _.template(dataTemplate);
var html = tpl({ myData: {collection.models});
node.html(html);
谢谢你们和我一起思考:)
【问题讨论】:
-
“每个 ItemView 都有一个模型,其中包含名字和姓氏等数据” - 这些数据来自哪里?端点还是其他东西?
-
没错。该应用程序将在单击按钮时启动,将调用 AJAX 端点,然后首先呈现此 (JSON) 数据。编辑:但是那个端点是另一个端点
-
基本上一个itemview不能有多个模型
-
但是我可以在现有的数据中添加额外的数据,对吧?额外的数据不会被同步或什么的。所以也许我只会渲染第二次调用的数据......
-
@Hando 我猜github.com/theironcook/Backbone.ModelBinder 是个不错的选择
标签: backbone.js underscore.js marionette