Данные Ember просто не добавляют параметры к запросу. У меня есть маршрут тегов, подобный этому
пример
App.TagsRoute = Ember.Route.extend({
model: function(params) {
var tag = params.tag_name;
var entries = this.store.find('entry', {tags: tag});
return entries;
}
});
но это продолжает делать тот же запрос, что и this.store.find('entry'). я делаю это неправильно?
Изменить:
Мой роутер выглядит так:
App.Router.map(function(){
this.resource('entries', function(){
this.resource('entry', { path: '/entry/:entry_id/:entry_title' });
});
this.route('tags', { path: '/t/:tag_name' });
});
когда я запрашиваю (например) localhost:8888/#/t/tag
значение params.tag_name равно 'tag'
изменить2:
Мой REST-адаптер
App.ApplicationAdapter = DS.RESTAdapter.extend({
bulkCommit: false,
buildURL: function(record, suffix) {
var s = this._super(record, suffix);
return s + ".json";
},
findQuery: function(store, type, query) {
var url = this.buildURL(type.typeKey),
proc = 'GET',
obj = { data: query },
theFinalQuery = url + "?" + $.param(query);
console.log(url); // this is the base url
console.log(proc); // this is the procedure
console.log(obj); // an object sent down to attach to the ajax request
console.log(theFinalQuery); // what the query looks like
// use the default rest adapter implementation
return this._super(store, type, query);
}
});
изменить3:
внося некоторые изменения в мой объект TagsRoute, я получаю следующий вывод:
App.TagsRoute = Ember.Route.extend({
model: function(params) {
var tag = params.tag_name;
var query = {tags: tag};
console.log(query);
var entries = this.store.find('entry', query);
return entries;
}
});
вывод в консоль при запросе localhost:8888/#/t/tag
Object {tags: "tag"}
(URL-адрес хоста) + api/v1/entries.json
GET
Object {data: Object}
(URL-адрес хоста) + api/ v1/entries.json?tags=tag
Class {type: function, query: Object, store: Class, isLoaded: true, meta: Object…
Данные Ember присоединяют параметры GET . я думаю, что моя ошибка, возможно, связана с запрошенным URL-адресом, он должен быть примерно таким:
(URL-адрес хоста) + api/v1/tags/:tag_name.json
вместо
(URL хоста) + api/v1/entries.json?tags=:tag_name
РЕШЕНИЕ
сборка ember-data (ember-data 1.0.0-beta.3-16-g2205566) не работает. Когда я изменил src скрипта на builds.emberjs.com.s3.amazonaws.com/canary/daily/20131018/ember-data.js, все заработало отлично.
правильный способ добавления параметров GET:
var query = {param: value};
var array = this.store.find('model', query);
Спасибо за вашу помощь