首先我使用ember.js 1.0.0
,ember-data 1.0.0 b3
和DS.RESTAdapter
。
到目前为止,创建工作还不错,但如果我试图删除一条记录(直接从入门中获得),我会收到以下错误消息:
Uncaught TypeError: Object [object Object] has no method 'deleteRecord'
这是我的模板:
{{#each}}
{{#link-to "role" this classBinding="isLoading:is-loading" tag="tr" }}
<td>{{ name }}</td>
<td>{{ role }}</td>
<td><button {{ action "deleteRoleAction" this}}>[x]</button></td>
{{/link-to}}
{{/each}}
这就是(在控制器中)的动作
this.get('model').deleteRecord()
感谢您的帮助。
如果不知道控制器的模型属性是如何分配的,很难说为什么该对象不会响应deleteRecord
。但看起来您所做的是对控制器的内容(可能是一个集合)进行迭代,然后将各个模型传递给操作({{action "deleteRoleAction" this}}
)。所以你可能希望你的行动看起来像这样:
deleteRoleAction: function(role) {
role.deleteRecord();
}
注意,deleteRecord
本身仅在模型上设置已删除标志;如果您真的想将该删除保存到服务器上,那么也需要调用role.save();
。(1.0.0.b4中还有一种新的destroyRecord
方法可以同时执行这两种操作。)