Реализовать маршрутизацию с EmberFire?
Тем не менее, я все еще неясен в отношении перспективы получения некоторых функциональных возможностей в качестве модели. Сейчас я пытаюсь использовать новую библиотеку emberFire, которая предоставляет некоторые базовые типы объектов для взаимодействия со службой Firebase.
Я могу создавать новые объекты и массивы объектов, но не могу правильно настроить маршруты.
- Могу ли я расширить свой базовый App.Model как один из объектов EmberFire, чтобы использовать более стандартные подходы для извлечения и обработки данных?
редактировать
Когда я попытался использовать предложение в ответе 2, я получил эту ошибку:
Uncaught TypeError: Cannot read property 'id' of undefined
Поэтому я попытался добавить в:
App.Post = EmberFire.Object.extend({
id: null,
body: null
});
Чтобы, возможно, определить Объект, однако я чувствую, что я тоже поступаю неправильно?
Редактировать 2
Вот мой текущий материал:
App = Ember.Application.create();
App.Router.map(function() {
this.resource('post', { path: '/:post_id' }, function() {
this.route('edit');
});
});
App.Post = EmberFire.Object.extend({
id: null,
title: null
});
Как я уже упоминал выше, я попытался определить свой объект как EmberFire.Object
а также EmberFire.Array
и попытался подключить App.Post.create
в моем маршруте.
App.IndexRoute = Ember.Route.extend({
model: function() {
return EmberFire.Array.create({
ref: new Firebase("https://embertest2.firebaseio.com/posts/")
});
}
});
App.PostRoute = Ember.Router.extend({
model: function(params) {
return EmberFire.Object.create({
ref: new Firebase("https://embertest2.firebaseio.com/posts/" + params.post_id)
});
}
});
Мне также интересно, если я не должен использовать EmberFire.Array
в моем IndexRoute генерировать по существу список ссылок для каждого поста.
App.IndexController = Ember.ArrayController.extend({
title: "",
actions: {
addPost: function() {
this.pushObject(this.get('title'));
}
}
});
В настоящее время моей целью является создание каждой записи сообщения, ее заполнение в списке, создание ссылок на каждое сообщение и возможность редактирования каждой записи сообщения на странице сообщения.
Вот текущая ошибка, которую я получаю:
Uncaught TypeError: Cannot read property 'id' of undefined ember.js:30274
serialize ember.js:30274
paramsForHandler ember.js:29636
Router.generate ember.js:29457
Ember.Router.Ember.Object.extend.generate ember.js:30524
(anonymous function) ember.js:32438
ComputedPropertyPrototype.get ember.js:4446
get ember.js:1937
(anonymous function) ember.js:20674
Ember.EnumerableUtils.forEach ember.js:1805
Ember.View.Ember.CoreView.extend._applyAttributeBindings ember.js:20655
Ember.View.Ember.CoreView.extend.applyAttributesToBuffer ember.js:21128
Ember.View.Ember.CoreView.extend.beforeRender ember.js:21107
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js:19458
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js:21096
superWrapper ember.js:1239
(anonymous function) ember.js:19440
Ember.Instrumentation.instrument ember.js:1683
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js:19439
Ember.merge.appendChild ember.js:21941
Ember.View.Ember.CoreView.extend.appendChild ember.js:21291
EmberHandlebars.ViewHelper.Ember.Object.create.helper ember.js:25821
(anonymous function) ember.js:25999
(anonymous function) ember.js:32685
program1
program handlebars-1.0.0.js:2251
Ember.View.Ember.CoreView.extend.render ember.js:20522
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js:19459
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js:21096
superWrapper ember.js:1239
(anonymous function) ember.js:19440
Ember.Instrumentation.instrument ember.js:1683
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js:19439
Ember.merge.renderToBufferIfNeeded ember.js:21887
Ember.View.Ember.CoreView.extend.renderToBufferIfNeeded ember.js:21103
Ember.merge.ensureChildrenAreInDOM ember.js:22563
Ember.ContainerView.Ember.View.extend._ensureChildrenAreInDOM ember.js:22528
DeferredActionQueues.flush ember.js:5484
Backburner.end ember.js:5568
(anonymous function) ember.js:5822
Я полагаю, что я делаю здесь что-то глупое и буду продолжать дурачиться, пока не наткнусь на то, что я сделал неправильно.
2 ответа
Вы можете прикрепить EmberFire.Object
на конкретный URL, который связан с сообщением. Вам понадобится post_id, чтобы сделать это:
App.PostRoute = Ember.Router.extend({
model: function(params) {
return EmberFire.Object.create({
ref: new Firebase("https://embertest2.firebaseio.com/posts/" + params.post_id)
});
}
});
README на странице emberFire, на которую вы ссылались, подробно описывает, как создавать свои собственные объекты в вашем Route
, Если вы говорите о Router
(который отличается от Route
), Я не думаю, что это должно быть иначе, чем обычно (с Ember Data). Если у вас возникли проблемы, вы должны опубликовать код, который вы пытались использовать, и любые ошибки, которые вы получаете. Если вы можете опубликовать JSBin, иллюстрирующий проблему, это будет еще лучше.