2014-02-11 1 views
1

Привет У меня есть следующая модель в backboneJS:Как использовать выборки с с отправкой Id

var Type = Backbone.Model.extend({ 
    url : "/api/SomeRoute" 
}); 
var model = new Type({id:"MyAlias"}); 
model.fetch(); 

На остальной части В SomeRoute У меня есть 2 действия, которые возвращает свою модель. Сначала он получает Id и возвращает модель Id и второй без параметров, которые возвращают коллекцию. Но когда я вызываю fetch() в JS, он не отправляет Id в запрос. Что я делаю неправильно?

ответ

3

Если атрибут id указан в модели. Затем запрос на выбор будет выглядеть как/api/SomeROute/id

Вместо url дать urlRoot. Если указан urlRoot, тогда будет добавлен идентификатор модели.

var Type = Backbone.Model.extend({ 
    urlRoot : "/api/SomeRoute" 
}); 
+0

Но, как вы видите, я выставиться идентификатор в конструкторе 'type'. Или я делаю что-то неправильно? – Maris

+0

, и он все еще собирается «.../api/SomeRout», но не «.../api/SomeRoute/MyAlias». Есть идеи? – Maris

+0

@Maris Я отредактировал свой ответ, пожалуйста, проверьте. – Konza

2

Перепишите свой адрес в следующем:

var type = Backbone.Model.extend({ 
    url: function(){ 
    return "/api/SomeRoute/" + this.get("id"); 
    } 
}); 
var model = new Type({id: "SomeId"}); 
model.fetch(); 
+0

Спасибо, что это работает. Но это похоже на «взломать». – Maris

+0

Я думаю, что это не хак)), потому что основная компиляция моей функции url)), но в другой стороне, если у моей модели нет id)) –

+0

Но что, если вам нужно использовать 'model.save()'? Запрос POST перейдет в/api/SomeRoute/SomeId. Но это не так. – Maris

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