使用find()方法时,Route返回空模型

时间:2014-05-18 21:38:07

标签: ember.js ember-data

我有一个时钟'包含一些用户设置的记录。记录保存在本地存储中。如果页面刷新,我不想在我已有的时候创建新的记录。
我使用的是Ember Data和LSAdapter。

我的方法:
在ApplicationRoute中,我检查类型' clock'的记录。存在。

如果是 - >将firstObject作为模型返回 如果没有 - >创建新记录并将其返回

总是创建新记录并返回它的简单情况正常。记录成为我的模特。但是,只要我使用this.find(),路由就会返回一个空模型。

App.ApplicationRoute = Ember.Route.extend({

    model : function(){
        var length, clock;
        var self = this;

        this.store.find('clock').then(function(record){

            length = record.get("length");  // works

            if(length == 0){
                clock = self.store.createRecord('clock', {
                    soundOgg: "data/sounds/cling.ogg",
                    soundMp3: "data/sounds/cling.mp3"
                });
                console.log(clock); // prints correct object

                return clock;   // returns empty model

            } else {
                clock = record.get('firstObject');
                console.log(clock); // prints correct object

                return clock;   // returns empty model
            }    
        });    
    }
});

为什么不起作用?有没有更好的方法来返回正确的模型?

1 个答案:

答案 0 :(得分:1)

而不是:

this.store.find('clock').then(...

这样做:

return this.store.find('clock').then(...

路由器的model挂钩应return承诺。