标签: ember-data

如何在ember-data中获取HTTP StatusCodes

当我调用

 App.store.createRecord(App.User,  { name: this.get("name") });
 App.store.commit();
Run Code Online (Sandbox Code Playgroud)

我怎么知道它是否成功以及如何等待asyn消息?

ajax asynchronous ember.js ember-data

1
推荐指数
1
解决办法
1450
查看次数

多态hasEany和belongsTo关系在ember-data rev 12中

我无法使用ember-data rev12实现我所理解的多态关系.

我有以下型号:

App.Project = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.Proposal = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.Employee = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.List = DS.Model.extend
  name: DS.attr('string')
  #project: DS.belongsTo('App.Project', { polymorphic: true })
Run Code Online (Sandbox Code Playgroud)

我试图从项目路由器创建一个新的列表,如此.

App.ProjectRoute = Ember.Route.extend
  events:
    newList: (project) ->
      lists = project.get('lists')
      list = App.List.createRecord(name: 'list1')
      lists.pushObject(list)
      @store.commit()
Run Code Online (Sandbox Code Playgroud)

但是对服务器的请求是错误地设置了多态键.

我期待有效载荷看起来像:

 { list: { name: list1, listable_type: project, listable_id: 100 } }
Run Code Online (Sandbox Code Playgroud)

但得到了:

{ list: { name: list1, project_type: project, project_id: …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

1
推荐指数
1
解决办法
2423
查看次数

适用于Ember.js的Rails 4 + Ember-Auth + Devise入门套件

使用本指南:https://github.com/heartsentwined/ember-auth-rails-demo为rails 4 + ember-auth + devise + bootstrap设置入门工具包

我收到这个错误: undefined local variable or method `build_resource' for #<SessionsController:0x007ffd4783b9d0>

我的控制台给了我: NameError (undefined local variable or method `build_resource' for #<SessionsController:0x007ffd4783b9d0>): app/controllers/sessions_controller.rb:5:in `create'

这是我的公共回购的链接:https://github.com/amaanr/ember-rails4-starter-kit/tree/ember-auth 随意克隆并确保做一个rake db:create,rake db:migrate并且rake db:seed

ruby ruby-on-rails devise ember.js ember-data

1
推荐指数
1
解决办法
1779
查看次数

使用查询参数过滤模型

在我的后端,我有一个可用的电话号码列表:/api/phonenumbers.我有一个模型:App.Phonenumber.我可以用我的所有电话号码App.Phonenumber.find();

现在我想过滤一下phonenumbers列表,只获取给定国家/城市的那些.后端能够通过接收/api/phonenumbers?country=DE&city=Berlin查询字符串来执行此过滤.

  1. 如何扩展我的Phonenumber模型以便能够传递这些查询字符串参数?
  2. 如何find使用这些查询参数执行?

ember.js ember-data

1
推荐指数
1
解决办法
1308
查看次数

EmberJS - 以相反顺序或按日期顺序显示模型

我有一个简单的Ember应用程序,它获得了一系列模型:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find("swap");                                                                                                                     
  }
});
Run Code Online (Sandbox Code Playgroud)

然后我在视图中输出它们就像这样:

{{#each model}}
    output stuff here
{{/each}}
Run Code Online (Sandbox Code Playgroud)

一切正常.我还有一个表单,可以让人们添加这个模型的新实例,它工作正常,并将新记录添加到底部.

但是,我想反向做.据我所知,我有两个选择:

  • 反向输出数组,当添加新数组时,将其添加到顶部,而不是底部
  • 每个模型都有一个createdAt带日期的属性,因此按createdAt属性按降序排列每个模型

我认为第二种选择更有意义,但我不知道如何处理它.

目前我只有一个App.IndexRoute,然后我有一个App.ApplicationController我已经添加了一些自定义属性.我假设我需要添加另一个属性或方法来从商店获取数据并按顺序排序createdAt

ember.js ember-data

1
推荐指数
1
解决办法
2306
查看次数

用ember-data删除模型记录的正确方法

我有一个控制器,列出了系统中的所有测量单位.当用户在Uom模型中选择特定记录时,我希望能够删除它.我正在使用Ember-Data beta-2.这是我到目前为止所拥有的:

App.UomsController = Ember.ArrayController.extend({
    actions: {
        deleteRecord: function(id) {
            console.log("deleting: " + id);
            var promisedDelete = this.store.find('uom',id).then(function(uom){
                uom.deleteRecord();
            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

该操作deleteRecord被称为传入有效ID,并返回承诺.使用then()承诺的功能,然后deleteRecord()当承诺履行并且它似乎在本地工作时,调用Ember .我这样说是因为这条记录会立即从屏幕和Ember调试器中消失.不幸的是,删除没有被持久化到后端,并且重新加载hte页面会立即恢复本地"已删除"记录.

我的问题是:

  1. 这是执行本地删除的合理方法吗?
  2. 如何将删除持久保存到后端?

ember.js ember-data

1
推荐指数
2
解决办法
1万
查看次数

不能对不在DOM中的Metamorph执行操作

所以我使用的是Ember 1.5.1和Ember-data 1.0.0 beta7

我有以下路线

App.Router.map -> @resource "items" @resource 'item', path: '/items/:id

项目从服务器获取.如果我开始这条路线,这两条路线就可以正常工作; 奇怪的事情发生在我开始项目页面(/ items/1),然后我尝试导航到/ items /通过一个链接,其中的动作由ItemController中的函数this.transitionToRoute("items")处理.我收到以下错误:

尝试过渡到项目ember.js?body = 1:3524

转换#2:items:调用beforeModel hook ember.js?body = 1:3524

转换#2:items:调用deserialize hook ember.js?body = 1:3524

Error while loading route: Error: Cannot perform operations on a Metamorph that is not in the DOM.
at Metamorph.checkRemoved (http://localhost:3000/assets/ember.js?body=1:27009:15)
at Metamorph.html (http://localhost:3000/assets/ember.js?body=1:26979:12)
at Object.DOMManager.empty (http://localhost:3000/assets/ember.js?body=1:27974:16)
at Object.Ember.merge.empty (http://localhost:3000/assets/ember.js?body=1:25139:21)
at Ember.CollectionView.Ember.ContainerView.extend.arrayWillChange (http://localhost:3000/assets/ember.js?body=1:25962:25)
at Object.sendEvent (http://localhost:3000/assets/ember.js?body=1:2600:14)
at Ember.Array.Ember.Mixin.create.arrayContentWillChange (http://localhost:3000/assets/ember.js?body=1:15317:11)
at superFunction [as _super] (http://localhost:3000/assets/ember.js?body=1:7726:16)
at RecordArray.extend.arrayContentWillChange (http://localhost:3000/assets/ember-data.js?body=1:7624:28)
at superWrapper [as …
Run Code Online (Sandbox Code Playgroud)

javascript jquery url-routing ember.js ember-data

1
推荐指数
1
解决办法
1125
查看次数

Ember Data什么时候会出现测试版?

我在生产现场使用Ember,正在考虑添加Ember Data.但是,我担心它仍处于测试阶段.

有谁知道我们什么时候可以期待一个稳定的发布?

我似乎无法在任何地方找到任何路线图或日期.

production-environment ember.js ember-data

1
推荐指数
1
解决办法
316
查看次数

使用先前删除的ID创建的记录会生成未捕获的错误

在我的应用程序中,我认为我是一个相当标准的User模型,其ID基于经过身份验证的用户的fbRef.getAuth().uid值(在我的情况下由匿名身份验证提供程序分配).我有一个全局用户,可以在用户进行身份验证/取消身份验证时动态更新,并使用基本this.store.find('user')调用进行填充.

当用户注销,然后使用相同的身份验证重新进行身份验证/登录时,就会出现问题.我在其他当前连接的浏览器的控制台中收到以下错误:

未捕获错误:pushedData在状态root.deleted.uncommitted中尝试处理事件.

(但请注意,执行注销/重新登录的用户/浏览器不会收到错误)

在这种情况下我还需要做些什么来确保emberfire自动删除的记录在每个连接的客户端的缓存存储中完全提交,或者这是某种限制?

作为参考,以下是我在用户登录时创建记录的方式:

var user = this.store.createRecord('user', {
    id: fbRef.getAuth().uid,
    nickname: nickname,
    joinedAt: new Date()
});

user.save();
Run Code Online (Sandbox Code Playgroud)

当他们退出时:

this.store.find('user', fbRef.getAuth().uid).then(function(user) {
    user.destroyRecord();
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data firebase emberfire

1
推荐指数
1
解决办法
206
查看次数

在模型挂钩之后设置控制器属性

我需要在model钩子后设置一个控制器属性.我可以想到两种方法:

model(params) {
  return this.store.findRecord('user', 1);
},

afterModel(model, transition) {
  model.get('profile').then(profile => {
    this.set('profile', profile);
  });
},

setupController(controller, model) {
  controller.set('model', model);
  controller.set('profile', this.get('profile'));
},
Run Code Online (Sandbox Code Playgroud)

另一种方法.即跳过setupController:

model(params) {
  return this.store.findRecord('user', 1);
},

afterModel(model, transition) {
  model.get('profile').then(profile => {
    this.controller.set('profile', profile);
  });
},
Run Code Online (Sandbox Code Playgroud)

两者似乎都有效.

两种方法都有任何额外的优点/缺点吗?显然,后者更短.但是在afterModel钩子中设置控制器属性是否感觉"干净" ?

编辑:之间的关系/关联userprofileasync.

ember.js ember-data ember-cli

1
推荐指数
1
解决办法
2390
查看次数