在路线的商店里找不到余烬模型

时间:2014-05-16 00:05:43

标签: javascript ember.js

我觉得我正在做的是非常基本的但我每次都得到一个未定义的对象,我有一个名为Example的应用程序,并定义了一个ApplicationRoute:

Example.ApplicationRoute = Em.Route.extend({
    model: function() {
        var user = this.store.find('user',1);
        console.log("username: " + user.username);
        return { user: user };
    }
});

和我的模特:

var attr = DS.attr

Example.User = DS.Model.extend({

    //logged in state can be loggedIn, loggedOff, pending, failed
    loggedInState: attr('string'),
    token: attr('string'),
    username: attr('string'),
    firstName: attr('string'),
    lastName: attr('string'),
    email: attr('string'),
    isLoggedIn: Em.computed.match('loggedInState', /loggedIn/)
});

最后一个FIXTURE:

Example.User.FIXTURES = [
    {
        id: 1,
        username: 'jxnagl',
        loggedInState: 'loggedOn',
        firstName: 'Jared',
        lastName: 'Nagle',
        token: '1234',
        email: 'jared.nagle@example.com'
    }
]

据我了解,在应用程序路径中调用模型挂钩时,此FIXTURE将出现在商店中。但是当我访问我的应用程序时,我在控制台中收到以下消息:

"username: undefined"

我有什么遗失的东西吗? Ember的文档显示了类似的例子,我没有看到差异。

2 个答案:

答案 0 :(得分:1)

“find”返回promise。

var user = this.store.find('user', 1).then(function(user){
    console.log('username: ' + user.get('username'));
});

我认为您的路线应该像

Example.ApplicationRoute = Em.Route.extend({
    model: function() {
        return this.store.find('user',1);
    }
});

答案 1 :(得分:0)

我认为这里的问题是我依赖的ember-auth插件。它以某种方式干扰了我的申请。删除此插件解决了我的问题。 :)