2014-09-20 3 views
1

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

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

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

Любые идеи?

ответ

1

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

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

+0

спасибо так много! –

0

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

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

Что кажется немного странным, но я «Пойду!»

Смежные вопросы