我正在玩 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')
});
答案 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
用于希望此功能退出的特定视图。