-1

我想要做什么

我试图在 Backbone TodoMVC 示例中实现效果,其中用户提交一个项目并在提交时将该项目附加到集合视图而不刷新页面。我正在尝试这样做,但同时也通过 POST 路由将这些数据提交到数据库。

示例:(http://todomvc.com/labs/architecture-examples/backbone_marionette/

谢谢

我试过的

审查了好几次,但我无法隔离代码在 BackboneJS 中这种绑定/绑定效果是如何工作的。

目前使用

节点,

表达

猫鼬/猫鼬/REST

骨干/骨干木偶

4

1 回答 1

1

向数据库提交数据与bind. Bind(and bindAll) 是 underscore.js 定义的辅助方法,用于设置引用的对象this(请参阅http://underscorejs.org/#bind)。要了解有关bind解决的“问题”的更多信息,请参见此处:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this (“函数上下文”段落)。

有了这个,回答你的问题:你需要做的就是保存一个新的模型实例。Backbone 会将其保存在服务器上,并为您提供一个 POST(如果您的urlRootorurl属性设置正确)。然后,您将新模型添加到集合中,Marionette 的集合/复合视图将自动为您添加项目视图(请参阅https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview。 md#collectionview-自动渲染)。

要实现相同的目标(创建新模型,然后将其添加到集合中),您可以使用collection.create快捷方式。这就是 Todo 代码中使用的内容(第 25-27 行):https ://github.com/tastejs/todomvc/blob/gh-pages/labs/architecture-examples/backbone_marionette/js/TodoMVC.Layout.js#L25 -L27

您可以在此处从我的书的代码中看到另一个示例:https ://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_controller.js#L59

您会注意到两个示例都没有使用bind.

于 2013-06-08T07:05:10.493 回答