【问题标题】:Ember abort queryParams transitionEmber 中止查询参数转换
【发布时间】:2018-01-29 12:04:44
【问题描述】:

我正在尝试捕获转换以在继续之前运行一些检查。在我的几乎所有用例中,我都能很好地完成它。

但是,我有一组仅更改 queryParams 的链接。当我在此链接上尝试transition.abort() 时,我收到错误消息。

这是我的模板:

{{#link-to (query-params date=nextWeek)}}next{{/link-to}}

而且,在路上:

actions: {
    willTransition (transition) {
      transition.abort();
    }
}

错误:

transitionByIntent@https://192.168.1.3/assets/vendor.js:62857:16
refresh@https://192.168.1.3/assets/vendor.js:62948:14
refresh@https://192.168.1.3/assets/vendor.js:37404:14
queryParamsDidChange@https://192.168.1.3/assets/vendor.js:37123:13
triggerEvent@https://192.168.1.3/assets/vendor.js:39417:13
trigger@https://192.168.1.3/assets/vendor.js:64310:7
fireQueryParamDidChange@https://192.168.1.3/assets/vendor.js:63092:7
getTransitionByIntent@https://192.168.1.3/assets/vendor.js:62785:5
transitionByIntent@https://192.168.1.3/assets/vendor.js:62855:16
refresh@https://192.168.1.3/assets/vendor.js:62948:14
refresh@https://192.168.1.3/assets/vendor.js:37404:14
queryParamsDidChange@https://192.168.1.3/assets/vendor.js:37123:13
triggerEvent@https://192.168.1.3/assets/vendor.js:39417:13
trigger@https://192.168.1.3/assets/vendor.js:64310:7
fireQueryParamDidChange@https://192.168.1.3/assets/vendor.js:63092:7
getTransitionByIntent@https://192.168.1.3/assets/vendor.js:62785:5

我截断了错误消息。基本上,它看起来像是一遍又一遍地尝试进行过渡。

此外,尽管出现错误,但页面确实会根据新参数刷新(它不应该刷新)。

问题

如何在查询参数发生变化时捕获转换,以便我决定继续还是abort

我知道有queryParamsDidChange 钩子。我希望有queryParamsWillChange

【问题讨论】:

    标签: javascript ember.js ember-router


    【解决方案1】:

    你可以在路由中有do_something方法并在willTransition里面调用。

    export default Ember.Route.extend({
        _doSomething() {
            //write your logic and return true if want to stop transition.
        },
        actions: {
            willTransition(transition) {
                //You can write doSomething logic here or you can write function and call
                if (this._doSomething()) {
                    transition.abort();
                }
                return true;
            }
        }
    })
    

    注意:queryParamsDidChange 是私有方法。可以随时更改此实现,而无需通知。

    【讨论】:

    • 这就是我的实现。问题是 abort 实际上并没有在我的示例中未命名的链接上中止。我会尝试做一个jsfiddle。
    • 在 ember-twiddle.com 上试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多