1

我正在使用一个我无法控制的 API。我想做这样的事情:

var Page = can.Model.extend({
  destroy: 'DELETE /api/{account_id}/{page_id}'
})

这不起作用 - canjs 根本不使用破坏 URL。我尝试创建一个函数,但传递的唯一参数是“id”。我相信你会说这不是真正的 REST,但我坚持使用 API。每当我将多个参数放入 url 时,都不会使用该 url。

有任何想法吗?

4

2 回答 2

1

您实际上在此处将原型销毁属性设置为字符串,因为如果未传递第二个对象,则传递给 extend() 的第一个对象被解释为原型属性。你实际上需要这样做: var Page = can.Model.extend({ destroy: 'DELETE /api/{account_id}/{page_id}' }, {})

(注意:destroy当您扩展 can.Model 时,CanJS 在内部将 AJAX 规范中的一些其他属性转换为函数,但仅限于静态属性中)

于 2014-09-20T06:42:28.780 回答
0

看起来这没问题(花了一段时间才弄清楚第二个参数是实例......没有看到任何地方记录):

var Page = can.Model.extend({
  destroy: function(id, page) {
    return $.get('/api/'+page.account_id+'/'+page.id);
  }
})

这似乎有点奇怪,但我会克服它!

于 2014-09-20T02:52:31.313 回答