然而,我发现自己还不清楚是否有可能获得一些作为模型的功能。现在,我正在尝试利用新的emberFire库,它为与Firebase服务交互提供了一些基本对象类型。
我能够创建新的对象和对象数组,但是我无法正确地设置路由。
编辑
当我尝试使用答案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)
});
}
});我也在想,也许我不应该在我的IndexRoute中使用IndexRoute来生成每个帖子的链接列表。
App.IndexController = Ember.ArrayController.extend({
title: "",
actions: {
addPost: function() {
this.pushObject(this.get('title'));
}
}
});我目前的目标是创建每个Post记录,将其填充到列表中,链接到每个Post,并在Post页面上编辑每个Post记录。
下面是我最近遇到的错误:
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我觉得我在这里做了些傻事,还会继续胡闹,直到我为我做错了什么而绊倒。
发布于 2013-09-29 05:46:13
链接到的emberFire页面上的自述文件详细说明了如何在Route中创建自定义对象。如果您讨论的是Router (与Route不同),我不认为它与正常情况(使用Ember数据)有什么不同。如果您有问题,您应该发布您试图使用的代码和任何错误,您正在得到。如果你能发布一个JSBin来说明这个问题,那就更好了。
发布于 2013-09-30 17:26:22
您可以将EmberFire.Object附加到与post关联的特定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)
});
}
});https://stackoverflow.com/questions/19073741
复制相似问题