Tag: ember data

Ember Data属于协会(JSON格式?)

我有两个模型’作者’和’发布者’(Rails),发布者有一个作者/作者所属的发布者关系。 我正确设置了Ember模型 – JS Fiddle – 以及当我手动推入商店时的关联。 但是,在请求/发布者索引时,只会创建发布者记录。 我尝试了几种类型的JSON响应: 出版商与作者 { “publishers”: [ { “id”: 1, “name”: “Test P 1”, “author”: 1 } ], “author”: { “id”: 1, “name”: “Test A 1”, “publisher”: 1 } } 有作者的出版商 { “publishers”: [ { “id”: 1, “name”: “Test P 1”, “author”: 1 } ], “authors”: [{ “id”: 1, […]

Ember模型仅加载最后一条记录

我正在尝试重现Railscasts 410示例(称为Raffler ),更改最新版本的设置并符合我的习惯: Ember 1.0.0-rc.6 Rails 4.0.0 Mongoid大师(4.0) 哈姆尔4 会徽0.3.0 在这个示例项目中,我们创建了一个简单的模型Entry ,它调用一个小的Rails Rest API。 一切都按预期工作,除了调用Raffler.Entry.find()获取所有条目只加载最后一条记录。 这是我的模型: Raffler.Entry = DS.Model.extend name: DS.attr(‘string’) winner: DS.attr(‘boolean’) 我的商店: DS.RESTAdapter.configure(‘plurals’, entry: ‘entries’) Raffler.Store = DS.Store.extend revision: 12 adapter: DS.RESTAdapter.create() 当调用Raffler.Entry.find() ,在http://localhost:3000/entries上有一个AJAX请求,并且返回所有记录(所以我不认为问题是服务器端): {“entries”:[{“id”:{“$oid”:”51e5b35b492cd4d286000001″},”name”:”Foo”,”winner”:true},{“id”:{“$oid”:”51e5b35b492cd4d286000002″},”name”:”Bar”,”winner”:false},{“id”:{“$oid”:”51e5b384492cd4d286000003″},”name”:”Baz”,”winner”:true}]} 但是只有最后一条记录真正加载到模型中。 这里是JS控制台: e=Raffler.Entry.find() e.toArray().length => 1 e.objectAt(0).get(‘name’) => “Baz” (always the last one) e.objectAt(1) => undefined

filter paginate将参数传递给异步ember数据关系请求

我想异步实现对ember数据的分页/过滤。 这是我的author模型: export default DS.Model.extend({ user: DS.belongsTo(‘user’), articles: DS.hasMany(‘article’, { async: true }), name: DS.attr(‘string’), email: DS.attr(‘string’) }); 路线: export default Ember.Route.extend({ model: function(params) { return this.store.find(‘author’, params.author_id); } }); 控制器: export default Ember.ObjectController.extend({ popularArticles: function() { return this.get(‘model.articles’).filter({ tab: ‘popular’ }); }.property(‘model.articles’) }); 请注意,模型具有带有DS.hasMany(‘article’, { async: true})关系的articles属性。 如果我使用此属性,则此请求将成为authors/1/articles及其异步。 这很好,直到我需要像authors/1/articles?page=2或authors/1/articles?tab=”hot”这样的请求。 一种可能的方法是,如控制器中所示,我有一个model.articles属性,用于过滤model.articles属性,并将生成过滤后的请求而不加载所有文章。 如何将查询参数传递给ember数据中的异步加载关系?

Ember Handling 401s于2015年重访

我可以在Ember / Ember数据中找到大量旧问题,询问/回答如何处理来自Rails后端的401s。 许多(如果不是全部)在这一点上似乎已经过时了。 我尝试过所有可以找到的东西。 ( Ember-Data handling 401’s ) 但无论我做什么,我都会在控制台中不断收到401错误,而401则永远不会被我的代码捕获。 如果在任何地方/模型/任何地方遇到过401,我想要做的就是添加一个重定向到’/’。 我不需要任何检查身份validation或其他任何东西。 我已经尝试将其添加到Application Route操作以及路由器本身。 error: function (error, transition) { console.log(“err: ” + error.status); if (error && error.status === 401) { return this.transitionToRoute(‘/’); } } 我也试过这个https://stackoverflow.com/a/19063009/1850353的几个版本。 App.ApplicationAdapter = DS.RESTAdapter.extend({ ajaxError: function(jqXHR) { var error = this._super(jqXHR); console.log(“jqXHR: ” + jqXHR.status); if (jqXHR && jqXHR.status === […]

Ember-data,hasMany关系,加载子集合,嵌套路由

我需要从带有ember-data及其默认REST适配器的rails后端加载模型。 我有一个与另一个有很多关系的模型: App.Post = DS.Model.extend({ title: DS.attr(“String”); comments: DS.hasMany(‘App.Comment’, {keys: ‘post_ids’, embbeded: true}); }) App.Post = DS.Model.extend({ body: DS.attr(“String”); post: DS.belongsTo(‘App.Post’); }) 服务器返回的JSON模型如下 { title: “a title”, comment_ids: [1,2,3,4] } 出于效率原因,我首先需要加载所有post而无需加载相关注释。 我这样做 App.store.findAll(‘App.Post’); 而且,当我选择一个特定的post时,我需要加载所有评论。 在ember-data文档中,据说我只需要调用 a_specific_post.get(‘comments’) 什么时候,我这样做,我得到一个很长的URL与所有评论ID: GET : /comments?ids%all_ids_appended_here 当然它不起作用,如果我有一千条评论,url非常长。 是否有可能获得与rails的嵌套路由模型匹配的请求? : GET /posts/post_id/comments 插件路由管理器https://github.com/ghempton/ember-routemanager似乎就是这种路由。 我可以将它与ember-data一起使用吗? 谢谢

具有嵌入式ID和侧载的Ember-Data和Active Model Serializer的has_many配置

我知道Ember-Data应该与设计的Active Model Serializer兼容,但它们似乎与序列化与嵌入式ID的has_many关系不合时宜。 例如,序列化器 class PostSerializer < ActiveModel::Serializer embed :ids has_many :comments end 生成JSON { “post”: { “comment_ids”: […] } } 但是Ember Data中的默认配置, App.Post = DS.Model.extend({ DS.hasMany(‘App.Comment’), }); App.Comment = DS.Model.extend(); 期望注释关联序列化为comments: […]没有_ids后缀(请参阅Ember.js指南的REST适配器部分的关系子部分 )。 我尝试了以下作为解决方法: class PostSerializer < ActiveModel::Serializer attribute :comments def comments object.comment_ids end end 它可以工作,但添加embed :ids, :include => true以便启用侧载现在什么都不做,因为AMS不知道它是一个关联。 编辑:我正在使用active_model_serializers (0.6.0) gem和Ember-Data修订版11

如何在Ember中与Rails进行通信

让我简要解释一下我的意思。 我正在编写一个使用Ember和Rails的应用程序。 每个员工都可以给其他同事一个工具。 他不知道有多少人收到了。 我只能知道我必须给予多少遗赠,以及我从其他人那里得到了多少。 但我真的不明白如何与Rails沟通。 如图片胜过千言万语,请看一下: kudos app http://wstaw.org/m/2013/03/25/kudos.png 当应用程序启动时,我加载指向/ users的用户列表。 当前用户位于/ currentuser。 当前用户的不同之处在于它有其他字段,如kudosReceived和kudosLeft。 让我们假设我想给乔添加一个工具。 我点击一个按钮,然后,什么? 假设当我去/ kudos / userid rails会发挥它的魔力。 它只是给乔增加了一个工具。 但我还想获得更新的当前用户数据(请记住,它位于/ currentuser)。 我该怎么发送? 我应该首先在控制器上使用CREATE或UPDATE方法吗? 如何获取当前用户的新数据? 在回调中? 或者我应该使用/ currentuser和GET。 但当? 这就是我现在所拥有的,但我完全不确定它是多么正确 // application.handlebars My Kudos {{#with controllers.current}} {{firstName}} {{lastName}} received: {{kudosReceived}} left: {{kudosLeft}} {{/with}} {{#each user in controllers.users}} {{user.firstName}} {{user.lastName}} (+) {{/each}} Sks.KudoController […]

Ember-data和MongoDB,如何处理_id

我正在使用带有rails和MongoDB的ember-data,并且我在MongoDB中存储ID的方式存在问题 – 在_id字段中。 Ember-data将使用id作为ID的默认字段,所以我试图像这样覆盖它: App.User = DS.Model.extend primaryKey: “_id” name: DS.attr “string” image: DS.attr “string” 这似乎在大部分时间都有效,但在某些情况下我从ember说得到例外: 未捕获错误:断言失败:您的服务器返回带有密钥_id的哈希,但您没有映射 我怀疑这可能是ember-data中的一个错误,因为它仍处于开发阶段,但是我试图找到一种方法来将_id映射到服务器端的id中? 我正在使用mongoid来进行mongo映射。

我的Rails路由应该与pushState Ember.js路由一起使用?

简而言之… 在构建Ember.js应用程序以持久化到Rails应用程序时,我应该如何处理Rails路由/视图? 我认为我只需要Rails来呈现application.html.erb布局,以便Ember.js应用程序初始化并处理路由/视图/模板。 细节: 具体来说,如果我访问localhost:3000 ,在我的Ember.js应用程序有机会初始化之前,Rails会在项目控制器上执行“索引”操作。 它会抱怨缺少索引模板。 我没有index.html.erb视图,因为我的Ember.js应用程序有一个视图/模板。 我应该为Rails应用程序创建空白视图吗? 我的Rails控制器操作应该返回一些东西以防止它呈现视图吗? 或者我希望构建正常的Rails视图以与Ember.js应用程序视图/模板一起使用? 如果我创建一个空白项目/ index.html.erb并访问localhost:3000 ,Rails将呈现它,Ember.js将从那时开始初始化并处理路由。 但是,如果我直接访问localhost:3000 / projects / new ,Rails会抱怨项目控制器中没有新操作。 我在Rails端的项目控制器上没有“新”操作,因为我不需要它。 我的Ember.js应用正在处理该视图/模板。 最后,我只是不确定在Rails应用程序旁边使用Ember.js的约定。 感谢您的帮助,并阅读此… 编辑: 我遗漏了我试图使用Ember.js路由器使用pushState历史记录的能力的细节。 这将留下非hashbang URL。 这就是为什么我在处理Rails竞争路由我的应用程序时遇到问题的原因之一。 Rails应用程序布局: Ember.js App: @DA = Em.Application.create name: ‘Design Archive’ VERSION: ‘0.1’ rootElement: ‘#design-archive’ ApplicationController: Em.Controller.extend() ApplicationView: Em.View.extend templateName: ‘application’ DA.initialize(DA.Router) 导轨路线: DesignArchive::Application.routes.draw do resources :clients, :only […]

Ember中父/子关系出错

我正在使用Ember 1.5,Ember-Data 1.0.0-beta.7和祖先gem。 我有一个parent和ancestors模型,但任何具有parent或ancestor模型条目都会得到这个奇怪的错误并失败。 错误: Ember Inspector ($E): Error: No model was found for ‘ancestor’ at new Error (native) at Error.Ember.Error (http://localhost:8080/assets/ember.js?body=1:911:19) at Ember.Object.extend.modelFor (http://localhost:8080/assets/ember-data.js?body=1:9808:33) at JSONSerializer.extend.extractSingle (http://localhost:8080/assets/ember-data.js?body=1:3021:28) at superWrapper [as extractSingle] (http://localhost:8080/assets/ember.js?body=1:1293:16) at Ember.Object.extend.extractFind (http://localhost:8080/assets/ember-data.js?body=1:2483:21) at Ember.Object.extend.extract (http://localhost:8080/assets/ember-data.js?body=1:2368:37) at http://localhost:8080/assets/ember-data.js?body=1:10340:34 at invokeCallback (http://localhost:8080/assets/ember.js?body=1:10014:19) at publish (http://localhost:8080/assets/ember.js?body=1:9684:9) VM6302:164 我已经注释掉了一堆代码,寻找我要求ancestor任何地方,但我找不到它。 下面是我目前正在使用的代码仍然抛出此错误。 #models/dream_symbol.js.coffee attr = DS.attr App.DreamSymbol […]