如何解决Ember JS - transitionTo 路由然后显示反馈消息
由于我是一个新手并且刚刚开始做一些前端,所以我在使用 EmberJS transitionTo() 时遇到了问题。 问题是当我在产品的详细信息中单击“删除”时,它会在那里显示反馈消息,然后它会转换到主页。 如果我在详细信息,我想先跳转到首页,然后显示反馈信息。
我拥有的代码:
delete: function(system,) {
const self = this;
this.get('data').del(systemId)
.then(function() {
self.transitionTo('home');
self.setFeedbackSuccess(self.currentModel,self.get('intl').t('delete.success'));
}).then(() => self.refresh())
.then(() => {
self.transitionTo('home');
self.setFeedbackSuccess(self.currentModel,self.get('intl').t('delete.success'));
})
.catch((errorObject) => {..})
.catch((errorObject) => self.errorHandler(errorObject,self.currentModel));
},
对该函数的第一次调用是在详细信息页面显示反馈的地方,如果我从那里删除它,在 .then(() => self.refresh()) 之后它会从反馈中不显示任何内容,除非我在主页上,然后从那里删除。
解决方法
所以有几种方法可以做到这一点。首先 transitionTo
返回一个 thenable 对象,以便您可以执行以下操作:
this.get('data').del(systemId)
.then(() => this.transitionTo('home'))
.then(() => this.setFeedbackSuccess(this.currentModel,this.get('intl').t('delete.success'));
这假设 setFeedbackSuccess
挂钩到某个全局通知系统中,该系统可以从新路由中看到。或者你可以装饰过渡对象
this.get('data').del(systemId)
.then(() => {
let transition = this.transitionTo('home'));
transition.data.feedback = {
model: this.currentModel,message: this.get('intl').t('delete.success')
};
return transition
});
然后在您的家乡路线中,在 activate
或 afterModel
之类的钩子之一中,您可以调用 setFeedbackSuccess
afterModel(model,transition) {
this._super(model,transition); // or super.afterModel(model,transition) if using native classes
if (transition.data.feedback) {
this.setFeedbackSuccess(transition.data.feedback.model,transition.data.feedback.message);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。