2014-02-15 43 views
2

即使阅读了大量的文档,我仍然无法完成这个简单的任务;Ember Select默认值

我有我的模板选择视图:

{{view Ember.Select id="id_diff" contentBinding="difficulties" optionValuePath="content.id" optionLabelPath="content.title" valueBinding="selectedDifficulty"}} 

这个选择与该数据填写正确: {ID:1,标题:易} {ID:2,标题:中} {ID :3,title:hard}

我只是想将默认值设置为“medium”而不是简单的,现在是默认值;我怎样才能做到这一点?

控制器:

Gmcontrolpanel.InsertActivityController = Em.Controller.extend({ 
difficulties: function() { 
    var difficulties = []; 
    difficulties = this.get('store').find('difficulty'); 
    return difficulties; 
}.property(), 
changeDifImg: function() { 
    jQuery('.diff-icon').animate({'opacity': 0}, 300); 
    jQuery('#diff-img' + jQuery('#id_diff').val()).animate({'opacity': 1}, 300);  
}.observes('selectedDifficulty'), 
startValue: null 
}); 

的ChangeDifImg属性用于改变相关联的困难图标时用户改变在选择的值;

(模板:

{{#each difficulty in difficulties}} 
     <img class="diff-icon" id="diff-img{{unbound difficulty.id}}" src="{{unbound "difficulty.link"}}" style="opacity: 0" /> 
     {{/each}} 

这对于每一个困难创造一个IMMAGE并设定他们都看不见;然后当用户选择在选择值时,changeDifImg属性显示正确的图标

回答

0

指定selectionBinding:

{{view Ember.Select id="id_diff" 
    contentBinding="difficulties" 
    optionValuePath="content.id" 
    optionLabelPath="content.title" 
    valueBinding="selectedDifficulty" 
    selectionBinding="default"}} 

,并进行以下修改您的控制器:

Gmcontrolpanel.InsertActivityController = Em.Controller.extend({ 
    difficulties: function() { 
     var difficulties = []; 
     difficulties = this.get('store').find('difficulty'); 
     return difficulties; 
}.property(), 
default: function() { 
    return this.get('difficulties').first(); 
}.observes('[email protected]'), 
changeDifImg: function() { 
    jQuery('.diff-icon').animate({'opacity': 0}, 300); 
    jQuery('#diff-img' + jQuery('#id_diff').val()).animate({'opacity': 1}, 300);  
}.observes('selectedDifficulty'), 
startValue: null 
}); 
+0

好吧,但如何selectionBinding的工作?将selectionBinding设置为“selectedDifficulty”不起作用;我怎样才能将选择的难度设置为“中等”? –

+0

你可以发布你的控制器吗?以示例方式更容易 – chopper

+0

我已将它添加到上面 –

1

在端很容易:

{{view Ember.Select contentBinding="controller.difficulty" optionValuePath="content.id" optionLabelPath="content.title" valueBinding="idDiff"}} 

,然后在控制器:

App.DifficultyController = Ember.Controller.extend({ 
    idDiff: '2' 
}); 

利用这种选择将与 '2' 默认值启动;如果你想设置默认值不是按值,而是按内容,你需要使用selectionBinding而不是valueBinding

+0

也许这不完全是灰烬 - 做事的方式,但工程;如果有人有更好的解决方案.. 。 –