首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用EmberFire实现路由?

用EmberFire实现路由?
EN

Stack Overflow用户
提问于 2013-09-29 02:15:55
回答 2查看 630关注 0票数 0

然而,我发现自己还不清楚是否有可能获得一些作为模型的功能。现在,我正在尝试利用新的emberFire库,它为与Firebase服务交互提供了一些基本对象类型。

我能够创建新的对象和对象数组,但是我无法正确地设置路由。

  • 我是否能够将我的基本App.Model扩展为EmberFire对象之一,以便使用更标准的方法来检索和操作数据?

编辑

当我尝试使用答案2中的建议时,我得到了以下错误:

Uncaught TypeError: Cannot read property 'id' of undefined

所以我试着加入:

代码语言:javascript
复制
App.Post = EmberFire.Object.extend({
  id: null,
  body: null
});

也许可以定义这个对象,但是我觉得我也走错了路?

编辑2

这是我的最新资料:

代码语言:javascript
复制
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.ObjectEmberFire.Array,并尝试在我的路由中插入App.Post.create

代码语言:javascript
复制
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来生成每个帖子的链接列表。

代码语言:javascript
复制
App.IndexController = Ember.ArrayController.extend({
    title: "",
    actions: {
      addPost: function() {
        this.pushObject(this.get('title'));
      }
    }
});

我目前的目标是创建每个Post记录,将其填充到列表中,链接到每个Post,并在Post页面上编辑每个Post记录。

下面是我最近遇到的错误:

代码语言:javascript
复制
    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

我觉得我在这里做了些傻事,还会继续胡闹,直到我为我做错了什么而绊倒。

EN

回答 2

Stack Overflow用户

发布于 2013-09-29 05:46:13

链接到的emberFire页面上的自述文件详细说明了如何在Route中创建自定义对象。如果您讨论的是Router (与Route不同),我不认为它与正常情况(使用Ember数据)有什么不同。如果您有问题,您应该发布您试图使用的代码和任何错误,您正在得到。如果你能发布一个JSBin来说明这个问题,那就更好了。

票数 1
EN

Stack Overflow用户

发布于 2013-09-30 17:26:22

您可以将EmberFire.Object附加到与post关联的特定URL。您将需要post_id来完成这个任务:

代码语言:javascript
复制
App.PostRoute = Ember.Router.extend({
  model: function(params) {
    return EmberFire.Object.create({
      ref: new Firebase("https://embertest2.firebaseio.com/posts/" + params.post_id)
    });
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19073741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档