我有一个Ember对象及其Instantiation,在定期调用“updateName”方法时,属性值会更新,但不会通过“model”反映在模板中。我猜错了什么?
var App = Ember.Application.create();
App.Router.map(function(){
this.route('application');
});
App.myData = Ember.Object.extend({
name: 'luke',
updateName: function(){
this.set('name', Math.random(1,10)+'');
},
newName: function(){
return this.get('name');
}.property('name')
});
App.myDataObj = App.myData.create({});
setInterval( function(){
App.myDataObj.updateName()
console.log( App.myDataObj.get('newName') )
}, 5000 );
App.ApplicationRoute = Ember.Route.extend({
model: function(){
return {
name: App.myDataObj.get('newName')
};
}
});
输出:卢克 那就是它
帮助感谢
答案 0 :(得分:1)
免责声明:这不是如何在ember中完成的事情,例如你应该使用模板/路由/控制器串联,并使用
Ember.run.later
代替setInterval
但是,引用模板中的模型可以实现,以下是如何实现它:
<script type="text/x-handlebars">
<h2>Application</h2>
{{model.newName}}
</script>
App = Ember.Application.create({
ready: function() {
console.log('App ready');
}
});
App.myData = Ember.Object.extend({
name: 'luke',
updateName: function(){
this.set('name', Math.random(1,10)+'');
},
newName: function(){
return this.get('name');
}.property('name')
});
App.myDataObj = App.myData.create();
setInterval( function(){
App.myDataObj.updateName();
console.log( App.myDataObj.get('newName') );
}, 5000 );
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.myDataObj;
}
});
http://jsbin.com/ISoZIma/3/edit
希望它有所帮助。