Object [object Object]没有方法'addArrayObserver'

时间:2013-10-28 21:36:13

标签: ember.js ember-data

我总是得到这个错误:对象[object Object]没有方法'addArrayObserver'。检查网络我明白这不是一个特定的错误,可能我的问题是在我的路线,但我看不出任何问题... 这是我的代码:

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

Notes.ApplicationAdapter = DS.FixtureAdapter.extend();

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

Notes.NotesRoute = Ember.Route.extend({ 
    model: function (){             
        return this.store.find('note'); 
    }
});

Notes.NotesController = Ember.ObjectController.extend ();

Notes.Note = DS.Model.extend ({
    title: DS.attr('string'),
    body: DS.attr('string'),
    url: DS.attr('string'),
});

Notes.Note.FIXTURES = [
{
    id: 1,
    title: 'hello world',
    body: 'ciao ciao ciao ciao',
    url: '...'
},
{   
    id: 2,
    title: 'javascript frameworks',
    body: 'Backbone.js, Ember.js, Knockout.js',
    url: '...'

},
{
    id: 3,
    title: 'Find a job in Berlin',
    body: 'Monster, beralinstartupjobs.com',
    url: '...'
}
]

这里是html:

<script type="text/x-handlebars">
<div class="wrap">
  {{#each itemController="note"}}
    <section>
        <h2>{{title}}</h2>
        <p>{{body}}</p>
        <input type="text" placeholder="URL:" class="input" />
    </section>
  {{/each}}
</div>    

我已经尝试更改Notes.NotesController = Ember.ObjectController.extend();与Notes.NotesController = Ember.ArrayController.extend();

但我仍然得到错误。我的代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

您的Notes.NotesController需要是Ember.ArrayController的子类,因为NotesRoute model挂钩返回的数据是一个类似(DS.RecordArray)的数组。

在此之后,您将收到错误,因为您声明itemController="note" ember需要一个名为Notes.NoteController的控制器,并且它必须是Ember.ObjectController的子类。该控制器将每个元素包装在#each视图助手中。

总结一下,代码中缺少这个:

Notes.NotesController = Ember.ArrayController.extend();

Notes.NoteController = Ember.ObjectController.extend();

请使用更新的代码http://jsfiddle.net/marciojunior/Ly8K6/

查看这个小提琴

我希望它有所帮助

答案 1 :(得分:0)

如上所述,我正在制作一个JSBin,但我被拉开了。

这里你去:

http://emberjs.jsbin.com/OhUXiRi/1/edit

自动为您生成控制器。