尝试创建配置文件页面但App.User.find()错误

时间:2014-04-25 08:29:01

标签: ember.js ember-data

我有一个关于小提琴的简单应用http://jsfiddle.net/kitsunde/qzj2n/2/

<script type="text/x-handlebars">
    {{outlet}}
</script>
<script type="text/x-handlebars" id="profile">
    Profile Page
    {{ email }}
</script>

我正在尝试显示个人资料页面。

window.App = Ember.Application.create();

App.Router.map(function () {
    this.resource('profile', {path: '/'});
});

App.User = DS.Model.extend({
  email: DS.attr('string')
});

App.User.FIXTURES = [
  {
    id: 1,
    email: 'herpyderp@gmail.com'
  }
];

App.ProfileRoute = Ember.Route.extend({
    model: function(){
        return App.User.find().get('firstObject');
    }
});

但我得到一个例外:

  

加载路径时出错:TypeError:undefined不是函数

我错过了什么?

1 个答案:

答案 0 :(得分:1)

缺少一些东西。你可以在这里找到固定的小提琴:

http://jsfiddle.net/47cHy/

window.App = Ember.Application.create();

App.ApplicationAdapter = DS.FixtureAdapter;

App.Router.map(function () {
    this.resource('profile', { path: '/' });
});

App.User = DS.Model.extend({
    email: DS.attr('string')
});

App.User.FIXTURES = [
    {
        id: 1,
        email: 'herpyderp@gmail.com'
    }
];

App.ProfileRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('user').then(function(users) {
            return users.get('firstObject');
        });
    }
});
  • 您的模板的ID为index,而不是路由profile
  • 的名称
  • 你必须告诉Ember特别使用夹具适配器。
  • 您通过全局对象直接访问了模型。您应该让Ember通过内部解析器完成工作并使用this.store.find
  • .find()返回一个承诺。您应该在then处理程序中获取第一个对象并将其返回。