0

我正在玩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')
});
4

1 回答 1

1

在我的评论中:

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

我的意思与此类似

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

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

于 2012-07-03T18:41:16.320 回答