Ember选择与queryParams emberjs的双向同步

时间:2014-04-13 09:08:24

标签: ember.js

我将queryParams与ember select同步 这就是我的想法。

  1. 用户可以在ember.select中选择一个选项 - > queryParams应该更新。
  2. 用户使用一些queryParam -on pageload复制/粘贴网址Ember.select应显示选中的相关选项

  3. 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);
        }
      }
    });
    
  4. ** 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 ** 好吧,我得到了一个工作解决方案,我已在下面发布。但我想这不是一个好方法。请帮助找到合适的答案。

0 个答案:

没有答案