can.Model уничтожить с несколькими параметрами

Я работаю с API, над которым у меня нет контроля. Я хотел бы сделать что-то вроде этого:

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

Это не работает — canjs просто не использует URL-адрес уничтожения. Я попытался создать функцию, но единственный переданный параметр - это «id». Я уверен, вы скажете, что это не совсем REST, но я застрял в API. Каждый раз, когда я помещаю в URL-адрес более одного параметра, URL-адрес не используется.

Любые идеи?


person nick lang    schedule 20.09.2014    source источник


Ответы (2)


На самом деле здесь вы устанавливаете для свойства уничтожения prototype строку, потому что первый объект, переданный в extend(), интерпретируется как свойства прототипа, если второй объект не передается. Вам действительно нужно сделать это: var Page = can.Model.extend({ destroy: 'DELETE /api/{account_id}/{page_id}' }, {})

(Примечание: CanJS внутренне преобразует destroy и некоторые другие свойства из спецификаций AJAX в функции при расширении can.Model, но только в статических свойствах)

person air_hadoken    schedule 20.09.2014

Кажется, это нормально (потребовалось некоторое время, чтобы понять, что 2-й параметр является экземпляром... нигде не видел, чтобы это было задокументировано):

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

Это кажется немного странным, но я с этим справлюсь!

person nick lang    schedule 20.09.2014