首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ember.select视图上预选值

如何在Ember.select视图上预选值
EN

Stack Overflow用户
提问于 2014-10-24 07:09:20
回答 2查看 721关注 0票数 1

我试图在Ember.select视图上预选一个值。我的选择很好,但是我不知道如何动态地预选一个值--或者现在是否可以用Ember 1.8-beta和Ember Data Beta-11来预选一个值?

这是我的选择:

代码语言:javascript
复制
{{view select
  class="uk-width-1-1"
  content=services
  optionLabelPath="content.name"
  optionValuePath="content.id"
  prompt="Service"
  selectionBinding="selectedService"
}}

当我试图用this.get('selectedService')获得当前的活动值时,它工作得很好,但是当我试图在控制器中设置一个特定的客户(例如,预先填写编辑表单)时,什么都不会发生:

代码语言:javascript
复制
var service = timetracking.get('service');
this.set('selectedService', service);

这些是我的模型:

代码语言:javascript
复制
App.Timetracking = DS.Model.extend({
  duration:  DS.attr('number'),
  day:       DS.attr('date'),
  notice:    DS.attr('string'),
  project:   DS.belongsTo('project', {async: true}),
  service:   DS.belongsTo('service', {async: true}),
  user:      DS.belongsTo('user', {async: true})
});

App.Service = DS.Model.extend({
  name:           DS.attr('string'),
  description:    DS.attr('string'),
  timetrackings:  DS.hasMany('timetracking', {async: true}),
  archived:       DS.attr('boolean')
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 07:19:17

因此,通过将"selectedService“设置为要选择的实例,可以设置复选框的值。

http://emberjs.jsbin.com/vuhefa

你好像在做同样的事

代码语言:javascript
复制
var service = timetracking.get('service');
this.set('selectedService', service);

但是,由于服务是异步关系,它将返回一个承诺,因此不是正确的实际模型,请尝试使用此方法。

代码语言:javascript
复制
var context = this;
var service = timetracking.get('service').then(function(service){
  context.set('selectedService', service);
});

异步关系返回承诺和嵌入关系返回对象是一条规则。

票数 1
EN

Stack Overflow用户

发布于 2014-10-31 07:45:47

在模板中,可以简单地使用来自控制器/模型的service,如下所示:

代码语言:javascript
复制
{{view select
  class="uk-width-1-1"
  selection=service
  content=services
  optionLabelPath="content.name"
  optionValuePath="content.id"
  prompt="Service"
}}

selection选项指定用于填充初始选择的属性。它将使用该对象以及optionLabelPathoptionValuePath来配置DOM中的<select>元素。

当用户选择一个选项时,相同的selection属性将被更新,即控制器/模型上的service

重要:由于您对模型上的service关系使用异步belongsTo,因此需要帮助select视图使用表示关系的承诺代理的内容。

为此,在控制器上使用别名:

代码语言:javascript
复制
App.TimetrackingController = Ember.ObjectController.extend({
  service: Ember.computed.alias('content.service.content')
});

余数问题上还有更多关于这方面的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26543093

复制
相关文章

相似问题

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