2014-11-04 3 views
1

У меня есть следующие настройки:переписывания URL Ember данные

App.Router.map(function() { 
    this.route('tab', { 'path' : 'tab/:which' }); 
}); 

App.ApplicationStore = DS.Store.extend({}); 
App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: '../api' 
}); 

App.TabAdapter = DS.RESTAdapter.extend({ 
    find: function(store, type, id) { 

    alert("I doesn't get invoked"); 

    return this._super(store, type, id); 
    } 
}); 

App.TabRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('emails', {tab: "inbox"}); 
    } 
}); 

И при посещении маршрута #/tab/inbox я хочу переписать URL для конечной точки из http://localhost/ba/api/emails?tab=inbox в http://localhost/ba/api/emails/inbox. Поэтому я переопределяю find()-метод в TabAdapter, но когда this.store.find('emails', {tab: "inbox"}); запускается, он не вводит мой переопределенный метод (и мое тестовое предупреждение не вызывается).

Почему мой переопределенный find()-метод не вызван?

+0

Я новичок в Эмбер, но есть TabsController и классы модели Tab, а? – GSP

+0

Да, но они в настоящее время пустые, и Ember автоматически создает контроллер для маршрута, если он не указан. App.TabController = Ember.Controller.extend ({}); App.Tab = DS.Model.extend ({}); –

ответ

2

Вы нарушаете неправильный метод find. Вы обретении запроса, а не идентификатор и должен быть перекрывая этот метод

findQuery: function(store, type, query) { 
    // Do your thing here 
    return this.ajax(this.buildURL(type.typeKey), 'GET', { data: query }); 
} 

И вы используете TabAdapter, который бы специфичны для моделей типа tab не типа email(s). Вы должны создать Email(s)Adapter. Общее соглашение заключается в том, что модель является сингулярной.

Смотрите также: How do you create a custom adapter for ember.js?

+0

Он по-прежнему не вызван? Это действительно странно. App.TabAdapter = DS.RESTAdapter.extend ({ \t findQuery: функция (магазин, тип запроса) { \t \t оповещения ("Я не получает вызова"); \t возвращение this.ajax (this.buildURL (type.typeKey), 'GET', {data: query}); \t} }); –

+0

Обновленный ответ ... – Kingpin2k

+0

Aaaah, конечно же, спасибо! Это имеет смысл! –

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