在模板中的FixtureAdapter存储中显示单个EmberJS DS.Model

时间:2013-01-12 05:57:49

标签: ember.js ember-data

我正在尝试将Ember-Brunch(原始存储库:https://github.com/icholy/ember-brunch)更新为最新的EmberJS和EmberJS-Data框架。我目前遇到的问题是我正在尝试使用DS.Model中的DS.FixtureAdapter将原始Bob模型转换为DS.Store。但无论我尝试什么,我都会遇到让数据显示的问题。以下是几次尝试:

路线:

App.BobRoute = Ember.Route.extend({
    model: function() { 
        return App.Bob.find();
    }
});

我收到以下错误:

  

未捕获的TypeError:无法调用null的“hasOwnProperty”方法

如果我切换到这条路线:

App.BobRoute = Ember.Route.extend({
    setupController: function() {
        App.BobController.set('content', App.Bob.find());
      }
});

我收到以下错误:

  

未捕获TypeError:对象App.BobController没有方法'set'   app.js:184 Uncaught TypeError:无法调用方法'hasOwnProperty'   空

有什么想法吗?

您可以在DS.Model-Implementation-For-Using-Local-DSStore分支中查看我当前的工作https://github.com/seankeating/ember-brunch以及我的尝试。

商品

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter.create()
});

控制器:

App.BobController = Em.ObjectController.extend({

});

型号:

var App = require('app'),
    attr = DS.attr;

App.Bob = DS.Model.extend({

    firstName : attr('string'),
    lastName  : attr('string'),
    lyrics    : attr('string'),

    fullName: function(){
        return this.get('firstName') + ' ' + this.get('lastName');
    }.property('firstName', 'lastName')

});

App.Bob.FIXTURES = [{
    firstName: 'bob',
    lastName: 'marley',
    lyrics: 'no woman no cry!'
}];

模板:

<h2>{{fullName}}'s page!</h2>
<button class="btn btn-success" {{action doClick target="view"}}>click me</button>
{{#linkTo home}}<button class="btn" {{action doHome}}>go back home</button>{{/linkTo}}

1 个答案:

答案 0 :(得分:2)

bc755f9之前,您需要将灯具键作为字符串提供,这是Ember Data在内部存储它们的方式。

现在,您可以使用数字或字符串作为夹具ID,一切都将按预期工作。

另外,您应该始终在开发中使用Ember.js的调试版本,如果出现问题,它会提供更好的错误消息。从ea6922f开始,如果您在localhost127.0.0.1中运行它,Ember.js的生成版本会发出警告。