ember.js - Ember 数据属于与选择下拉 View

标签 ember.js ember-data

我正在尝试使用 Ember 和 Ember Data 做一些非常基本的事情。

1) 帖子属于用户;用户有很多帖子

2)在创建新的帖子表单中,我想要选择/下拉所有用户

3)当我编辑帖子(使用相同的表单)时,我想将其正确绑定(bind)回保管箱

问题:执行绑定(bind)到用户列表的下拉菜单的最佳实践是什么? 如何绑定(bind)编辑表单以再次填充下拉列表?

用户模型:

App.User = DS.Model.extend({
  posts: DS.hasMany('post', {async: true}),
});

帖子模型:

App.Post = DS.Model.extend(Ember.Validations.Mixin, {
  user: DS.belongsTo('user', {async: true}),
});

创建新帖子表单:

{{view Em.Select
  content=users <<<<< How do I bind this.store.find("user") here?
  optionValuePath='content.id'
  optionLabelPath='content.name'
}}

我不明白将所选内容与用户绑定(bind)的最佳实践。

尝试 1:

*我正在使用 Ember-Form

  {{em-select
    property="user_id"
    label="user"
    prompt="Select user:"
    content=controllers.users.content
    optionValuePath="content.id"
    optionLabelPath="content.first_name"
  }}

关于保存操作:

newItem.set('user', this.store.getById('user', this.get('user_id')));

我尝试使用 user_id 作为表单的属性,并转换回用户对象以在保存时分配给帖子。然而,这种方法有点愚蠢,因为我每次保存时都会主动将 user_id 转换为用户对象。我觉得如果我进行了正确的绑定(bind),应该有一种自动完成的方法,而不是跳过圈子将属性绑定(bind)为 user_id。这也使得当我使用相同的表单编辑帖子时很难重新绑定(bind)。既然所有的关系都已经建立了,我有一种感觉,我在这里做错了什么。我认为一定有更好的方法。

谢谢!

最佳答案

截至 2014 年 9 月,Ember.Select{ async: true } 存在问题。他们在一起玩得不好。

myModel.get('myAsyncRel') 将返回一个 Promise,Ember.Select 无法识别 Promise,因此无法正确处理此问题。

一种解决方法是使用非异步关系。

另一种解决方法是使用如下内容:

关于ember.js - Ember 数据属于与选择下拉 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707806/

相关文章:

ajax - Ember 以 slug 为 id 向数据添加空行

ember.js - 在 emberjs 中使用更详细的数据动态填充模型

ember.js - 如何分析ember的页面渲染性能?

javascript - Ember 无标签组件 innerhtml

javascript - Ember JS 过渡到嵌套路由,其中​​所有路由都是 View 中的动态段

ember.js - 访问 Ember js 服务中的 Store 数据

Ember.js 变形器 - 它们去哪里?

javascript - Ember模型生命周期,并恢复到原始状态

ember.js - Ember : load models without waiting

javascript - 无法使用 RESTSerializer 加载数据