1

新しいユーザーを作成するためのトランザクションを作成しようとしています。

ember-data.js srcから:

新しいトランザクションを作成するには、 アプリケーションのインスタンスの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を小文字に変更すると、次のようになります。

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であるを定義しました; 既存のクラスであるDS.Storeを使用しています。トランザクションを作成するコードは、ストアのインスタンスで呼び出す必要があります(慣例により、クラスは大文字で、インスタンスは小文字です)。extend

定義したストアのインスタンスを作成するには:

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

extendStoreクラスを使用して独自のStoreクラスを取得し、独自のStoreクラスを呼び出しcreateてインスタンス化することに注意してください。

ember.jsextendとcreateの違いは何ですか?を参照してください。拡張と作成の詳細については。

于 2013-01-31T05:00:36.333 に答える