我正在学习Ember.js并浏览一些指南.我在这里阅读观察者:http: //emberjs.com/guides/object-model/observers/
我想玩这个例子,所以我复制并粘贴到我的js文件中.在向观察者回调添加警告语句后,我惊讶地发现它没有被调用.
http://jsbin.com/UWEseSo/2/edit?js,output
我能够找到,如果你添加:
person.get('fullName');
Run Code Online (Sandbox Code Playgroud)
在调用设置firstName之前,将调用观察者回调.如果在再次不再调用回调之后立即再次设置第一个名称.
谁能解释一下这里发生了什么?
谢谢.
编辑 - - - -
我已经对代码进行了更多跟踪,现在我已经了解了为什么这种行为可能是这样的.虽然这个例子似乎有一个bug,但它可能只是一个优化.我之前观察到,如果我打电话给"获取",观察者就会工作.如果我没有打电话给"获取",观察者将无法工作.我相信Ember.js可能只是对此很聪明,如果没有调用"get",故意不打扰调用观察者.他们可能这样做是因为如果没有"get",就没有理由调用观察者,因为应用程序不可能显示过时信息.
一旦调用了"get",就会设置内部标志以确保在下一个"set"上调用观察者.
给定这样的应用程序路径:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
setTimeout(function() {
resolve();
}, 3000);
});
}
});
Run Code Online (Sandbox Code Playgroud)
如何在此模型挂钩等待时显示加载模板?
我试过这样的事情:
<script type="text/x-handlebars" id="loading">
<h3>Loading...</h3>
</script>
Run Code Online (Sandbox Code Playgroud)
但这仅在加载应用程序的子路径时显示.如何在应用程序本身仍在加载时显示加载模板?
谢谢.
ember.js ×2