我在玩Ember.Router。在浏览了Kasper Tidemann的优秀示例规范-emberjs-routeing-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')
});
评论中:
如果重新打开 Em.Select,则将更改应用于所有 Select Ember 应用中的控件。您可能希望创建一个视图 扩展 Ember。选择,然后重写 valueDidChange 方法
我的意思是与此类似
var RoutableSelect = Ember.Select.extend({
valueDidChange: Ember.observer(function() {
this._super();
App.router.transitionTo(this.get('value'))
}, 'value');
});
这样,您就不会为应用的其余部分覆盖Ember.Select
的原始功能。现在,您可以将RoutableSelect
用于希望此功能退出的特定视图。