2014-03-30 24 views
0

我有一个简单的夹具:试图做一个简单的添加物品到夹具

App.User.FIXTURES = [ 
    { userid: 1, name: 'George', email: '[email protected]', bio: 'Lorem Ipsum', created: 'Jan 5, 2015' }, 
    { userid: 2, name: 'Tom', email: '[email protected]', bio: 'Lorem Ipsum 2', created: 'Jan 15, 2015' }, 
    { userid: 3, name: 'Mary', email: '[email protected]', bio: 'Lorem Ipsum 3', created: 'Jan 25, 2015' } 
]; 

我有一个简单的提交:(片段)

App.AddController = Ember.ArrayController.extend({ 
    actions: { 
     save: function() { 
      App.User.createRecord({ id: 4, userid: 4, name: 'Created person', email: 'sdh', bio: 'my bio', created: '6543456' }); 

我认为这是正确,因为我再也没有在createRecord上发生错误,但现在我得到一个错误,有什么想法?还有一个步骤我错过了将某物推入夹具?

Uncaught TypeError: Object function() { 
    if (!wasApplied) { 
     Class.proto(); // prepare prototype... 
    } 
    o_defineProperty(this, GUID_KEY, undefinedDescriptor); 
    o_defineProperty(this, '_super', undefinedDescriptor); 
+0

你是什么改变导致错误?您需要调用保存在新记录上才能将其保存回商店。 'var user = App.User.createRecord({id:4,userid:4,name:'Created person',email:'sdh',bio:'my bio',created:'6543456'}); user.save();'看到这部分指南:http://emberjs.com/guides/getting-started/creating-a-new-model/ – Sarus

+0

谢谢Sarus。对此完全陌生并试图快速掌握这一点。 你的事情奏效了,但我得到一个错误,我猜想保存? XMLHttpRequest无法加载file:/// G:/ users。该请求被重定向到'file:/// G:/ users /',这对于需要预检的跨源请求是不允许的。 – TrueHarlequin

+0

只是试图将新项目放回商店,以便它更新我的UI中的列表。没有JSON或花哨,只是一个本地的东西。 – TrueHarlequin

回答

0

Kingpin2k在调用UserModel本身的createRecord时是正确的,这是使用Ember Data的一种较老的方式。如果您使用的是最新版本,则应该从商店对象中调用createRecord

下面是它应该是什么样子:

DEBUG: ------------------------------- 
DEBUG: Ember  : 1.6.0-beta.1+canary.24b19e51 
DEBUG: Handlebars : 1.0.0 
DEBUG: jQuery  : 2.0.2 
DEBUG: ------------------------------- 

我建议审查“创建新模型实例”灰烬的部分入门指南:

App.AddController = Ember.ArrayController.extend({ 
    actions: { 
     save: function() { 
      //Create a new user 
      var user = this.store.createRecord('user',{ 
       id: 4, 
       userid: 4, 
       name: 'Created person', 
       email: 'sdh', 
       bio: 'my bio', 
       created: '6543456' 
      }); 
      // Saves the new model, but not needed if you're just using FIXTURES 
      // Making the call shouldn't throw any errors though and is used in the Guide 
      user.save(); 
      // Now you can find your record in the store 
      this.store.find('user', 4).then(function(user){ 
       console.info(user); 
      }); 
     } 
    } 
}); 

本上测试因为他们覆盖了这个话题:

http://emberjs.com/guides/getting-started/creating-a-new-model/

+0

谢谢Sarus,我刚刚使用ember.js网站的入门套件。 DEBUG:-------------------------------烬-1.4.0.js:3461 DEBUG:余烬:1.4 0.0烬-1.4.0.js:3461 DEBUG:余烬数据:1.0.0-beta.7.f87cba88烬-1.4.0.js:3461 DEBUG:车把:1.1.2余烬-1.4.0.js :3461 DEBUG:jQuery:1.10.2 ember-1.4.0.js:3461 DEBUG:---------------------------- --- 这是我得到错误的保存位置:XMLHttpRequest无法加载文件:/// G:/ users。该请求被重定向到'file:/// G:/ users /',这对于需要预检的跨源请求是不允许的。 – TrueHarlequin

+0

出于好奇,您是否在不使用Web服务器的情况下运行初学者软件包?无论如何,因为kingpin2k提到你不需要'save'调用来实际地将该项目保存到'store'中,尽管新记录不会被保存。 – Sarus

+0

是的,没有网络服务器。我使用的是初学者软件包,我猜测它在星期五是1.4.0,现在是1.5.0,但仍然是相同的错误。我把我的Javascript:http://jsfiddle.net/Harlequin/ZB7CQ/保存()带回XMLHttpRequest错误,我只是想更新夹具,所以它有一个新的项目,然后刷新视图。与删除相同,但我想如果我找出保存删除将遵循。 – TrueHarlequin

相关问题