我将queryParams与ember select同步 这就是我的想法。
用户使用一些queryParam -on pageload复制/粘贴网址Ember.select应显示选中的相关选项
sortAscending属性可以映射到订单。 我能够实现第2部分。现在我对如何实现第1部分感到困惑 的 J S B I N
App.ApplicationController = Ember.Controller.extend({
queryParams: ['sortBy'],
sortBy: '',
selectedOption: { id: 2 },
options: [
{ id: 1, name: 'relevance', value: 'relevance' , order: true },
{ id: 2, name: 'First Name', value: 'firstName' , order: true }
],
sortByDidChange: function(){
options = this.get('options').findBy('value',this.get('sortBy'));
console.log('optionid = '+options.id );
this.set('selectedOption.id',options.id);
console.log('selectedoption = '+this.get('selectedOption.id'));
}.observes('sortBy'),
actions: {
change: function(){
this.set('selectedOption.id',2);
}
}
});
** U P D A T E S 2 **
sortBySelection: function(){
var sortByOptions= this.get('sortByOptions');
var selection = sortByOptions.findBy('value',this.get('sortBy')) || {id: 1} ;
return selection ;
}.property('sortBy'),
查看
{{view Ember.Select
content=sortByOptions
optionLabelPath='content.name'
optionValuePath='content.id'
selection = sortBySelection
classNames='pull-right'
}}
在我的sort mixin中,sortBySelection应该绑定到Ember.Select,它的值应该更新为sortByOptions的第一个对象(即{id:1,value:price,order:true} )。但它没有取而代之的是未定义的值,而我的Ember.select没有选择选项。当用户(I)选择一个选项时,一切正常
sortByOptionsDidChange: function(){
console.log(this.get('sortBySelection')); // <++++++++ undefinded ??
var sortBy = this.get('sortBySelection.value') || 'relevance';
var OrderBy = this.get('sortBySelection.order') && true;
this.set('sortProperties',[sortBy]);
this.set('sortAscending',OrderBy);
}.observes('sortBySelection'),
** U P D A T E S 1 ** 好吧,我得到了一个工作解决方案,我已在下面发布。但我想这不是一个好方法。请帮助找到合适的答案。