EmberJS保存数据

时间:2013-12-02 21:13:08

标签: ember.js model ember-data

我的应用程序使用Fixture数据(稍后会移植到Localstorage),我需要根据用户点击实现'save'方法。用户单击是一个映射到视图的操作,从视图中,它会被传输到控制器,以便将信息保存到模型中,实际上模板具有:

<button {{action 'save' this target='view'}}>Save</button>  <!-- note that the 'this' keyword I am sending corresponds to a specific instance of the model that is in a collection, done using an {{#each model}} loop

视图有

actions:{
    save:function(card){
       // perform some UI activity
       this.get('controller').send('save',card); // card representing 'this'
    }
}

控制器有:

actions:{
    save:function(card){
       console.log("controller reached"); // does execute
       card.save(); // spits out an error
    }
}

一切正常但是card.save()方法调用在控制器中不起作用。我的意思是,我所要做的就是将特定的“卡片”保存到我的数据中,但它一直随地吐痰:

未捕获的TypeError:对象#没有方法'保存'

我在这里缺少什么?

附注:

  1. Controller返回模型集合
  2. 控制器的相应“查看”也包含“编辑”部分。 因此,当用户选择“编辑”特定模型时,它不会 转换到不同的URL,而不是加载“编辑”表单 在同一网址内。
  3. 这意味着该模型在此具体 控制器本质上是集合,我只想保存 正在编辑的特定模型。

1 个答案:

答案 0 :(得分:2)

看起来好像您没有使用任何客户端记录管理库(例如ember-data或ember-model)。话虽这么说,你的App.Card实例并不是真正的实例,它们只是POJO,并且没有在POJO上定义的保存方法。

听起来你想要对ember数据或ember模型进行一些研究(我建议使用ember数据,http://emberjs.com/guides/models/

如果您不想使用其中任何一种,您只需使用ajax调用来保存数据:

save:function(card){
   console.log("controller reached"); // does execute
   //       card; // spits out an error
   $.ajax({... , data:$(card), ...});
}

如果它是固定装置并且您无意将其保存在任何地方,并且它只是一个干运行,添加一个丑陋的警报或日志

save:function(card){
   console.log("controller reached"); // does execute
   console.log('pretend to save ' + card);
   alert('pretend to save ' + card);
}