0

我创建了一个使用本地存储适配器的示例应用程序:hbs 代码是:

  <script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
<input type="button" {{action cr}} value="Create"/>
<ul>
{{#each item in model}}
<li>{{item.name}}</li>
{{else}}
NO Item
{{/each}}
<ul>
</script>

app.js 文件是:

App = Ember.Application.create();
App.LSAdapter = DS.LSAdapter.extend({
namespace: 'app'
});

App.ApplicationAdapter = DS.LSAdapter;

App.Router.map(function() {
});

App.Store = DS.Store.extend();
App.store = App.Store.create();
App.Item = DS.Model.extend({
name:DS.attr('string'),
uniqueName:DS.attr('string')
});
App.ApplicationRoute = Ember.Route.extend({
model:function(){
    return this.get('store').findAll('item');
}
});
App.IndexRoute = Ember.Route.extend({
model:function(){
    return this.get('store').findAll('item');
}
});
App.Item.reopen({
url:'localhost/app/'
});
App.ApplicationController = Ember.ArrayController.extend({
actions:{
cr:function(){
this.get('store').createRecord('item',{
    id:Math.random().toString(32).slice(2).substr(0, 5),
    name:'Hello',
    uniqueName:'Hello 2'
});
App.store.commit();
}
}
});

但我得到一个错误:

Uncaught TypeError: Object [object Object] has no method 'commit' 

我正在使用 emberjs 1.0 和最后一个 ember 数据构建。我想将记录保存到本地存储中,但我找不到任何示例。

4

1 回答 1

2

您不需要Store显式创建,因此删除此行:

App.store = App.Store.create();

此外,在您的ApplicationController:

App.ApplicationController = Ember.ArrayController.extend({
  actions:{
    cr:function(){
      var item = this.get('store').createRecord('item',{
        id:Math.random().toString(32).slice(2).substr(0, 5),
        name:'Hello',
        uniqueName:'Hello 2'
      });
      item.save();
    }
  }
});

希望能帮助到你。

于 2013-09-14T09:38:30.387 回答