์ฝ๋ ์ํ :
// app/router.js
const Router = EmberRouter.extend({
location: config.locationType,
rootURL: config.rootURL,
routerService: service('router'),
init() {
this.routerService.on('routeDidChange', () => {});
}
});
๋ณต์ : https://github.com/ember-triage/emberjs-17791
์ถ์ router
๋ฅผ EmberRouter
์ฃผ์
ํ๋ ๊ฒ๋ ์ค๋จ๋ฉ๋๋ค.
๋ถ์ผ์น์ ๋ํ ํ ๋ก ์ ๋ฐ๋ผ ๋ผ์ฐํฐ๋ฅผ ์ฝ์
ํ๋ฉด ์๋ํ์ง๋ง this._super(...arguments);
ํธ์ถํด์ผํฉ๋๋ค.https://github.com/efx/emberjs-17791/commit/8d8dd5afa1b9841742d1127a95689ab98c085632#diff -f3a289058604b2b069d07bb8e2cda60cR8
๋ด ์ค๋ฅ; ์ด๋ฅผ ๋ผ์ฐํฐ ์ธ์คํด์ค์์ ๋ผ์ฐํ
์ด๋ฒคํธ๋ฅผ ๋ฑ๋ก ํ ์ ์๋์ง ํ์ธํ์ต๋๋ค.
์ฝ๋ ์ค ๋ํซ์ด ๋ผ์ฐํฐ ์๋น์ค๋ฅผ ์ฃผ์ ํ์ง ์๋๋ค๋ @efx ๋ ๋ค๋ฅธ ์ํฉ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค!
Ember 3.8์์๋์ด ๋์์ ํ์ธํ ์ ์์ต๋๋ค.
์ํธ:
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
import { set } from '@ember/object';
import { inject as service } from '@ember/service';
const Router = EmberRouter.extend({
location: config.locationType,
rootURL: config.rootURL,
router: service(),
routeHelpers: service(),
init() {
this._super(...arguments);
this.router.on('routeDidChange', () => {
// tracking with piwik, if the piwik object has been defined
if (typeof _paq === 'object') {
_paq.push(['trackPageView']);
}
// tracking with google analytics, if the ga method has been defined
if (typeof ga === 'function') {
return ga('send', 'pageview', {
'page': this.get('url'),
'title': this.get('url')
});
}
// set current route to the onla accordion, which will open
// it's corresponding accordion element
var onlaController = this.routeHelpers.controllerFor('onla');
set(onlaController, 'currentRouteName', this.router.currentRouteName);
});
}
});
์์ธ:
Exception has occurred: RangeError
RangeError: Maximum call stack size exceeded
at Registry.isValidFullName (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16657:20)
at Registry.has (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16448:17)
at Registry.proto.validateInjections (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16762:25)
at processInjections (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:15999:28)
at buildInjections (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16040:7)
at injectionsFor (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16051:12)
at FactoryManager.create (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:16116:13)
at instantiateFactory (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:15979:63)
at lookup (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:15907:12)
at Container.lookup (https://n204.crealogix.net:4200/assets/vendor-e2a60dfe5e2603e2bdff789c3cdefd1e.js:15751:14)
์ด ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ๊ฐ ํ์ ๋์๊ธฐ ๋๋ฌธ์ 'routeDidChange'์ด๋ฒคํธ๋ฅผ ์์ ํ์ฌ router.js
'didTransition'ํจ์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์์ต๋๋ค.
์ง์ ์ค๋จ : ์ง์ ์ค๋จ ๋ "didTransition"๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ค๊ณ ํ์ต๋๋ค. ๋ผ์ฐํฐ ์๋น์ค๋ฅผ ์ฝ์ ํ๊ณ "routeDidChange"์ด๋ฒคํธ๋ฅผ ์์ ํ์ญ์์ค. [์ง์ ์ค๋จ ID : deprecate-router-events] ์์ธํ ๋ด์ฉ์ https://emberjs.com/deprecations/v3.x#toc_deprecate -router-events๋ฅผ ์ฐธ์กฐํ์ธ์.
@ursqontis ๊ธฐ๋ก์ ์ํด ๋ผ์ฐํฐ ๋ด์์ ๋ผ์ฐํฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. this.on('routeDidChange')
๋งํ๋ฉด๋ฉ๋๋ค. ์ด ์ค ๋ํซ์๋ https://github.com/efx/emberjs-17791/commit/8d8dd5afa1b9841742d1127a95689ab98c085632#diff -f3a289058604b2b069d07bb8e2cda60cR8์ด ์์ต๋๋ค.
์ด๊ฒ์ด EmberRouter
์์์ด ์์
์ ์ํํ๊ธฐ์ํ ๊ณต์ฉ API๊ฐ๋๋๋ก ์๋ ๋ ๊ฒฝ์ฐ ๋ฌธ์ํ ํ ์ ์์ต๋๊น? cc. @pzuraq @rwjblue @chadhietala? ๊ณต๊ฐ API๊ฐ ์๋๋ผ๋ฉด ์์ RFC๋ฅผ ์์ฑ ํ์ฌ ๊ณต๊ฐ API๋ก
์๋น์ค ์ฃผ์ ์ด ์คํจํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ฒ๊ทธ๋ก ๊ฐ์ฃผ๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฌธ์ ๋ ๋ผ์ฐํฐ ์๋น์ค ์์ฒด์ router : main์ด ์ฃผ์ ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ผ์ด๋๋ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ์์ ์ ๋ผ์ฐํฐ ์๋น์ค๊ฐ ๋ผ์ฐํฐ๋ฅผ _not_ ์ด์ฌํ ์กฐํํ๋๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค .
@rwjblue , ๋ฆฌํํธ๊ฐ ์ผ๋ง๋ ์ด๋ ต์ต๋๊น? ์์ผ๋ก ๋ช ์ฃผ ๋์ ๊ฒฝ๋ก๊ฐ ๋ถ๋ช ํ๋ค๋ฉด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์์ ๊ฒ์ ๋๋ค.
@chriskrycho ๋น์ ์ด๊ฒ์ ๋์น ๋ฏธ์ํฉ๋๋ค. ์๋ ์ฃผ์ ์ ์ ๊ฑฐํ๊ณ ์ค์ ๋ก ์ฐ๊ฒฐ๋์์ ๋๋ง ๋ผ์ฐํฐ ์๋น์ค๋ฅผ ์ฐพ๋ ๊ฒ์ ์๋นํ ๊ฐ๋จํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค (์ : "๋๋ฌด ์ด๋ ต์ง ์์").
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@ursqontis ๊ธฐ๋ก์ ์ํด ๋ผ์ฐํฐ ๋ด์์ ๋ผ์ฐํฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
this.on('routeDidChange')
๋งํ๋ฉด๋ฉ๋๋ค. ์ด ์ค ๋ํซ์๋ https://github.com/efx/emberjs-17791/commit/8d8dd5afa1b9841742d1127a95689ab98c085632#diff -f3a289058604b2b069d07bb8e2cda60cR8์ด ์์ต๋๋ค.