1

我正在尝试创建一个事务来创建一个新用户。

从 ember-data.js 源代码:

要创建新事务,请调用 应用程序实例的transaction()方法:
DS.Store

  var transaction = App.store.transaction();

我正在尝试在控制器中创建事务

App.CreateUserController = Ember.Controller.extend({
    addUser: function() {
        var transaction = App.store.transaction();
    }
});

但我得到

TypeError: App.store is undefined

我定义了这家商店

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

它使用了大写字母 S,所以我尝试将 App.store 更改为 App.Store,我得到了

TypeError: App.Store.transaction is not a function

如果我将 App.Store 更改为使用小写字母 s,我会得到

TypeError: store is undefined

我错过了什么吗?

4

3 回答 3

4

Ember.js 中的事务消失了:保存个人记录。https://github.com/emberjs/data/blob/master/TRANSITION.md

于 2014-10-02T02:42:18.027 回答
2

您需要创建一个商店而不是扩展它。惯例是在创建实例时使用小写字母,因此您应该创建一个商店并将其命名为 App.store 而不是 App.Store

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

然后你就可以创建交易了

var transaction = App.store.transaction();
于 2013-01-31T05:00:42.610 回答
1

你已经定义App.Store了,这是一个;你正在extend学习 DS.Store,这是一个现有的类。应该在 store 的实例上调用创建事务的代码(按照惯例,类是大写的,实例是小写的)。

要创建已定义商店的实例:

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

请注意,您extend使用 Store 类来获取您自己的 Store 类,并调用create您自己的 Store 类来实例化它。

请参阅ember.js 扩展和创建有什么区别?有关扩展与创建的更多信息。

于 2013-01-31T05:00:36.333 回答