我在Backbone视图中看到了一些奇怪的行为。当我在console.log“this.model”时,我的渲染方法和我的一个自定义方法得到了不同的结果。
这就是我设置路线的方式:
app_router.on('route:showTemplates', function(id) { var listtemplate = new ListTemplateModel.Model({ id: id }); listtemplate.fetch().then(function() { var detailsview = new ListDetailsView.View({ model: listtemplate }); }); });
如果我在我的视图的渲染方法中使用console.log,我得到了我期望的结果:
define(['use!backbone', 'helpers/templateHelper'], function(B, TemplateHelper) { var View = B.View.extend({ el: '#page', template: TemplateHelper('taskDetailTemplate'), events: { 'keypress #new-step': 'addOnEnter' }, initialize: function() { this.render(); }, render: function() { this.$el.html(this.template(this.model.toJSON())); }, addOnEnter: function(e) { this.input = this.$('#new-step'); if (e.which !== 13) {// || !this.input.val().trim()) { return; } console.log(this.model.toJSON()); } }); return { View: View }; });
但是我的“addOnEnter”方法中的console.log返回通过会话创建的所有模型实例的数组。它就像所有以前创建的模型一样被激活了。