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は、ルートの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();
    }
});

log_inの問題は決して変わらないようです(model.set行が実行され、「access_token」が更新されたとしても)。私は何か間違ったことをしているのですか、それともバグを報告する必要がありますか?

完全なコード: http: //jsfiddle.net/Q8eHq/

4

1 に答える 1

3

App.Login.find()単一のオブジェクトではなく、列挙可能なオブジェクトを返すモデルを設定しています。これを行う1つの方法は、モデルを単一のオブジェクトに設定することです。

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 に答える