我正在尝试使用以下模板:
<script type="text/x-handlebars" data-template-name="login">
{{#if logged_in}}
Logged in
{{else}}
Not logged in
{{/if}}
</script>
与模型:
App.Login = DS.Model.extend({
access_token: DS.attr('string'),
logged_in: function() {
return (this.get('access_token') != null);
}.property('access_token')
});
显示用户的登录状态。
access_token是通过Route的setupController中的异步回调设置的:
App.LoginRoute = Ember.Route.extend({
setupController: function(controller, model) {
controller.set('content', model);
// call async login method
window.setInterval(function test() {
model.set('access_token', 'MY_ACCESS_TOKEN');
console.log(model.get('access_token'));
}, 5000);
},
model: function() {
return App.Login.find();
}
});
问题是logged_in似乎永远不会改变(即使执行了model.set行并更新了'access_token')。我做错了什么或者我应该提交错误吗?
答案 0 :(得分:3)
您正在将模型设置为App.Login.find()
,它返回一个可枚举的,而不是单个对象。一种方法是将模型设置为单个对象:
App.LoginRoute = Ember.Route.extend({
model: function() {
return App.Login.find(1);
}
});
或者如果您打算使用动态路线(例如users / login / 9):
App.LoginRoute = Ember.Route.extend({
model: function(params) {
return App.Login.find(params.id);
}
});