如何在 `router` 中观察指定的 `properties` 并做出相应的反应?
how to watch specified `properties` in `router` and react accordinlgy?
在我的应用中,用户设置了 6 个独立的数字。他们可以 delete/re-enter/enter 输入值。控制器将此值发送到路由器。
当路由器监视所有这些属性时,它将把用户带到下一页。我的问题是如何观察属性(指定的属性)并做出相应的反应?
这是我的路由器代码(片段):
export default Ember.Route.extend({
otp1:null,
otp2:null,
otp3:null,
otp4:null,
otp5:null,
otp6:null,
myWatcher(){
console.log('all properties are available, enable next');
},
setupController(controller,model) {
this._super(...arguments);
this.controllerFor('auth-page.credit-card.credit-cardno').set('enableNext', false);
},
actions:{
setupCardNumber( number, index ){
this.set('opt'+index, number ); //setting values
console.log( 'setting', this.get('opt'+index) );//gets property
}
}
}
据我了解你的代码,你可以简单地创建一个 if-statement
:
setupCardNumber( number, index ){
if (this.get('otp1') &&
this.get('otp2') &&
this.get('otp3') &&
this.get('otp4') &&
this.get('otp5') &&
this.get('otp6') ) {
this.transitionTo('next-page');
}
}
我建议你创建一个地图或其他东西,你的代码往往很快就会变得无法维护。
如果我是你,我会将此逻辑移至控制器。您应该考虑使用 Ember computed function /observer 来观察用户输入的值,并在输入完成时触发操作。
在这种情况下,如果你想转换到路由,你可以使用 transitionToRoute()
钩子 - API 或者你可以从控制器发送一个动作到路由
在我的应用中,用户设置了 6 个独立的数字。他们可以 delete/re-enter/enter 输入值。控制器将此值发送到路由器。
当路由器监视所有这些属性时,它将把用户带到下一页。我的问题是如何观察属性(指定的属性)并做出相应的反应?
这是我的路由器代码(片段):
export default Ember.Route.extend({
otp1:null,
otp2:null,
otp3:null,
otp4:null,
otp5:null,
otp6:null,
myWatcher(){
console.log('all properties are available, enable next');
},
setupController(controller,model) {
this._super(...arguments);
this.controllerFor('auth-page.credit-card.credit-cardno').set('enableNext', false);
},
actions:{
setupCardNumber( number, index ){
this.set('opt'+index, number ); //setting values
console.log( 'setting', this.get('opt'+index) );//gets property
}
}
}
据我了解你的代码,你可以简单地创建一个 if-statement
:
setupCardNumber( number, index ){
if (this.get('otp1') &&
this.get('otp2') &&
this.get('otp3') &&
this.get('otp4') &&
this.get('otp5') &&
this.get('otp6') ) {
this.transitionTo('next-page');
}
}
我建议你创建一个地图或其他东西,你的代码往往很快就会变得无法维护。
如果我是你,我会将此逻辑移至控制器。您应该考虑使用 Ember computed function /observer 来观察用户输入的值,并在输入完成时触发操作。
在这种情况下,如果你想转换到路由,你可以使用 transitionToRoute()
钩子 - API 或者你可以从控制器发送一个动作到路由