http://jsfiddle.net/herrturtur/ExWFH/
试试这个:
时区字段(从和到)可以正常显示,但不会保存(重新加载以查看效果),并且名称字段根本不会更新。
我在第153行中设置()调用NameView的关闭函数(由Enter-keypress触发)中的属性后调用this.model.save()
。
close: function(e){
this.$el.removeClass('editing');
this.model.set({
value: this.$('.name-value').val(),
from: this.model.from, // this is saved in the
until: this.model.until
});
this.model.save();
if(this.eraView.$el.attr('editing')){
this.eraView.close();
}
this.render();
},
有人能告诉我我做错了吗?
除了一切,我在Chrome中遇到TypeError:非法调用。
答案 0 :(得分:1)
您遇到的问题是在调用close
函数时。
在close
函数中,您正在调用自身,因此它似乎是一个冗余循环。
在你的karass.EraView
上,你也会在函数中触发相同的功能,这是不必要的。我建议将其重命名为与行动意图相对应的不同功能。
this.trigger('close');
答案 1 :(得分:0)
因为这个原因你得到了这个错误:
this.eraView.on('close', close);
它应该是:
this.eraView.on('close', this.close, this);
接下来,当你这样做时:
this.model.set({
value: this.$('.name-value').val(),
from: this.model.from,
until: this.model.until
});
this.model.from
和this.model.until
未定义,此外您已经提前设置了这些属性。该模型已经拥有它们。如果您想要访问它们,则需要this.model.get('from')
而不是this.model.from
。但是从模型中获取值并再次设置它是不必要的。您可以set
值,因为其他2已经存在。
另一个问题是类似的。渲染NameView时,您正在执行:
this.$el.html(this.template({value: this.model.value}));
与以前相同,您需要改为this.model.get('value')
。
您应该尝试在Chrome中设置一些断点并逐步执行代码。通过它可以很容易地看出它出了什么问题:)
更新了jsFiddle。