我正在尝试创建一个事务来创建一个新用户。
来自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更改为使用小写s,我会
TypeError: store is undefined
我错过了什么吗?
答案 0 :(得分:2)
您需要创建商店而不是扩展商店。惯例是在创建实例时使用小写字母,因此应该创建商店并将其命名为App.store
而不是App.Store。App.store = DS.Store.create({
revision: 11,
adapter: App.Adapter.create({})
});
然后你就可以创建一个交易
var transaction = App.store.transaction();
答案 1 :(得分:2)
Ember.js中的交易消失了:保存个人记录。 https://github.com/emberjs/data/blob/master/TRANSITION.md
答案 2 :(得分:1)
您已定义App.Store
,这是 类 ;您是extend
DS.Store,这是一个现有的类。应该在商店的 实例 上调用创建事务的代码(按照惯例,类是大写的,实例是小写的。)
创建已定义商店的实例:
App.store = App.Store.create();
myTransaction = App.store.transaction();
请注意,您{Store}类extend
可以获取自己的Store类,并在自己的商店类上调用create
来实例化它。
有关extend vs create的更多信息,请参阅What's the difference between ember.js extend and create?。