0

但是,我发现自己仍然不清楚将某些功能作为模型获得的前景。现在我正在尝试使用新的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.Objectand 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

我想我在这里做了一些愚蠢的事情,并且会继续胡闹,直到我发现我做错了什么。

4

2 回答 2

1

您可以附加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)
    });
  }
});
于 2013-09-30T17:26:22.937 回答
1

您链接的 emberFire 页面上的 README 详细说明了如何在Route. 如果您谈论的是Router(与 a 不同Route),我认为它应该与正常情况(使用 Ember Data)有任何不同。如果您遇到问题,您应该发布您尝试使用的代码以及您遇到的任何错误。如果您可以发布说明问题的 JSBin,那就更好了。

于 2013-09-29T05:46:13.143 回答