但是,我发现自己仍然不清楚将某些功能作为模型获得的前景。现在我正在尝试使用新的emberFire库,它提供了一些基本的对象类型来与 Firebase 服务进行交互。
我能够创建新对象和对象数组,但是我无法正确设置 Routes。
- 我是否能够将我的基础 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
and EmberFire.Array
,并尝试插入App.Post.create
我的 Route。
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'));
}
}
});
我目前的目标是创建每个 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
我想我在这里做了一些愚蠢的事情,并且会继续胡闹,直到我发现我做错了什么。