原谅我,我是骨干新手,以及MVC javascript概念。
所以,我正在建立一个评论系统:
createComment: function () {
// create new comment model
var comment = new CommentModel({});
// render form view right after new button
var formview = new FormView({model: comment});
this.$el.after(formview.render().$el);
// add saved model to collection after form was submitted successfully
formview.on('success', this.handleFormSuccess, this);
// finally, return false to stop event propagation
return false;
},
我无法理解的是如何获取已呈现但尚未发送到集合的注释列表。看,我想确保一次只打开一个评论框。
我的方法是检查有多少评论是打开的,并关闭除当前模型之外的所有人。
Using Backbone.js & Underscore, how to get a count of items from the model?似乎在模型点击集合后提供了如何执行此操作的建议。
我对骨干很新,所以我完全有可能在这方面走错了方向。
如何获取列表?
答案 0 :(得分:0)
正如Joe建议的那样,我认为你的问题就在这一行:
formview.on('success', this.handleFormSuccess, this);
但是,我不认为他的建议(将“成功”更改为“同步”)也可以,因为formview
是查看,而不是模型或集合,因此它甚至没有on
方法。
on
方法是视图的元素,所以你可以这样做:
formview.$el.on('success', this.handleFormSuccess, this);
虽然有两个问题:
所以要解决您需要将这两行更改为:
formview.$el.on('submit', _(this.handleFormSuccess).bind(this));
或者您也可以致电:
_(this).bindAll('handleFormSuccess');
FormView
的{{1}}中的,这样可以使您无需绑定initialize
:
this.handleFormSuccess)
希望有所帮助。