Ember-Data:找到记录而不是承诺

时间:2014-06-25 05:14:26

标签: ember.js dependency-injection callback ember-data promise

我正在尝试获取已登录的用户(来自/users?current=1工作),并在整个应用程序中将该用户作为属性提供,而不是注入我的用户我正在注入此内容:

Object { type: makeCtor/Class(), query: Object, content: Getter, store: Object, manager: Object, isLoaded: true, meta: Object, 3 more… }

那就像完全一样,看起来不像我想要的那样。该记录在商店中出现就好了。这是相关的代码。谢谢你的期待。

App.initializer({
    name: "appUser",
    after:['ember-data'],

    initialize: function (container, application) {
        var store = container.lookup('store:main');
        store.find('user',{current: "1"}).then(function(data){
            var user = data; //data.get('content')[0] (?) (Something else?)
            application.register("my:user", user, {instantiate:false});
            application.inject("controller", "user", "my:user");
            application.inject("route", "user", "my:user");
        });
    }
});

1 个答案:

答案 0 :(得分:2)

集合有一个属性(firstObject),它将返回集合中的第一个项目,或者未定义。

当您在控制台中查看模型时,您需要小心思考模型应该是什么样子。它隐藏了子属性中的属性,并在使用getter时返回它们,并在使用setter时设置它们。这完全是为了回滚的能力。

App.initializer({
    name: "appUser",
    after:['ember-data'],

    initialize: function (container, application) {
        var store = container.lookup('store:main');
        store.find('user',{current: "1"}).then(function(data){
            var user = data.get('firstObject');  
            console.log(user.get('first_name')); // use getters to view the properties
            application.register("my:user", user, {instantiate:false});
            application.inject("controller", "user", "my:user");
            application.inject("route", "user", "my:user");
        });
    }
});