我试图在Ember.select视图上预选一个值。我的选择很好,但是我不知道如何动态地预选一个值--或者现在是否可以用Ember 1.8-beta和Ember Data Beta-11来预选一个值?
这是我的选择:
{{view select
class="uk-width-1-1"
content=services
optionLabelPath="content.name"
optionValuePath="content.id"
prompt="Service"
selectionBinding="selectedService"
}}当我试图用this.get('selectedService')获得当前的活动值时,它工作得很好,但是当我试图在控制器中设置一个特定的客户(例如,预先填写编辑表单)时,什么都不会发生:
var service = timetracking.get('service');
this.set('selectedService', service);这些是我的模型:
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')
});发布于 2014-10-24 07:19:17
因此,通过将"selectedService“设置为要选择的实例,可以设置复选框的值。
http://emberjs.jsbin.com/vuhefa
你好像在做同样的事
var service = timetracking.get('service');
this.set('selectedService', service);但是,由于服务是异步关系,它将返回一个承诺,因此不是正确的实际模型,请尝试使用此方法。
var context = this;
var service = timetracking.get('service').then(function(service){
context.set('selectedService', service);
});异步关系返回承诺和嵌入关系返回对象是一条规则。
发布于 2014-10-31 07:45:47
在模板中,可以简单地使用来自控制器/模型的service,如下所示:
{{view select
class="uk-width-1-1"
selection=service
content=services
optionLabelPath="content.name"
optionValuePath="content.id"
prompt="Service"
}}selection选项指定用于填充初始选择的属性。它将使用该对象以及optionLabelPath和optionValuePath来配置DOM中的<select>元素。
当用户选择一个选项时,相同的selection属性将被更新,即控制器/模型上的service。
重要:由于您对模型上的service关系使用异步belongsTo,因此需要帮助select视图使用表示关系的承诺代理的内容。
为此,在控制器上使用别名:
App.TimetrackingController = Ember.ObjectController.extend({
service: Ember.computed.alias('content.service.content')
});在余数问题上还有更多关于这方面的内容。
https://stackoverflow.com/questions/26543093
复制相似问题