Ember.Select和Ember.Router

时间:2012-06-29 15:46:08

标签: ember.js

我正在玩 Ember.Router 。经过Kasper Tidemann的优秀样本canonical-emberjs-routing-example后,我想我大部分都得到了它。

但是我想知道如何最好地将它与 Ember.Select 结合起来。
使用案例:我希望用户能够从下拉列表中选择模块,然后路由到正确的模块。

如何重新打开 Ember.Select 并覆盖 valueDidChange ? 有没有更好的方法呢?

Em.Select.reopen({
  valueDidChange: Ember.observer(function() {
    this._super();
    console.log('selection changed');
    App.router.transitionTo(this.get('value'))
  }, 'value')
});

1 个答案:

答案 0 :(得分:1)

在我的评论中:

  

如果您重新打开Em.Select,您将对所有选择应用您的更改   您的Ember应用程序中的控件。您可能想要创建一个视图   扩展Ember.Select,然后覆盖valueDidChange方法

我的意思是类似

var RoutableSelect = Ember.Select.extend({
    valueDidChange: Ember.observer(function() {
        this._super();
        App.router.transitionTo(this.get('value'))
    }, 'value');
});

这样您就不会覆盖应用其余部分Ember.Select的原始功能。现在,您可以将RoutableSelect用于希望此功能退出的特定视图。