1

我正在尝试使用以下模板:

<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')。我做错了什么还是应该提交错误?

完整代码:http: //jsfiddle.net/Q8eHq/

4

1 回答 1

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);
    }
});
于 2013-02-26T12:15:40.007 回答