我最近从Ember.js 0.9.8.1更新到Ember.js 1.0-pre2。现在我发现在设置绑定时不会触发观察者。
以下是一个说明问题的小例子:
模板:
<script type="text/x-handlebars">
{{view App.SimpleView textBinding="App.text"}}
</script>
代码:
App = Ember.Application.create();
App.text = "new";
App.SimpleView = Ember.View.extend({
text: 'old',
fired: 'no',
template: Ember.Handlebars.compile('Text: {{view.text}}. Observer fired: {{view.fired}}'),
textObserver: function() {
this.set('fired', 'yes');
}.observes('text')
});
使用Ember.js 0.9.8.1它按预期工作,打印 Text:new。观察者被解雇:是,(fiddle)但是在1.0-pre2中,观察者没有被解雇(fiddle)。
这个小像我的错误,但在报告之前,我想问一下API中的某些内容是否发生了变化。
答案 0 :(得分:2)
嗯,在与Kristofor Selden讨论之后,0.9.8.1中的行为是一个错误。 在1.0.pre-2中,在您的小提琴中,当实例化视图时,App.text已经设置为“new”,这是观察者未被触发的预期行为。