| 807 | } |
| 808 | |
| 809 | onNavigate (e, recursive) { |
| 810 | let view |
| 811 | if (recursive == null) { recursive = false } |
| 812 | if (!recursive) { this.viewLoad = new ViewLoadTimer() } |
| 813 | if (_.isString(e.viewClass)) { |
| 814 | dynamicRequire[e.viewClass]().then(viewClass => { |
| 815 | return this.onNavigate(_.assign({}, e, { viewClass }), true) |
| 816 | }) |
| 817 | return |
| 818 | } |
| 819 | |
| 820 | const manualView = e.view || e.viewClass |
| 821 | if ((e.route === document.location.pathname) && !manualView) { |
| 822 | return document.location.reload() |
| 823 | } |
| 824 | this.navigate(e.route, { trigger: !manualView }) |
| 825 | this._trackPageView() |
| 826 | if (!manualView) { return } |
| 827 | if (e.viewClass) { |
| 828 | const args = e.viewArgs || [] |
| 829 | const Klass = e.viewClass.default ? e.viewClass.default : e.viewClass |
| 830 | view = new Klass(...Array.from(args || [])) |
| 831 | view.render() |
| 832 | this.openView(view) |
| 833 | this.viewLoad.setView(view) |
| 834 | } else { |
| 835 | this.openView(e.view) |
| 836 | this.viewLoad.setView(e.view) |
| 837 | } |
| 838 | return this.viewLoad.record() |
| 839 | } |
| 840 | |
| 841 | navigate (fragment, options) { |
| 842 | super.navigate(fragment, options) |