Ionic2๋ก ์ฑ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ๋๋ App.ts๋ฅผ ๋ถ๋ชจ๋ก, Welcome.ts๋ฅผ ์์ ํ์ด์ง๋ก, Featured.ts๋ฅผ ์์ ํ์ด์ง๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค. Firebase๊ฐ ์ฑ๊ณผ ํตํฉ๋์ด ์์ต๋๋ค. Rootpage๋ ๋จผ์ Welcome์ผ๋ก ์ค์ ๋ฉ๋๋ค.
this.rootPage = Welcome;
1๋จ๊ณ: Welcome to authenicate with Google์์ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ผ๋จ onAuth๊ฐ ํธ์ถ๋๋ฉด this.nav.setRoot(Featured);
๋ฅผ ์ค์ ํฉ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ชจ๋ ์ ์๋ํฉ๋๋ค. ๋ค๋ฅธ ํ์ด์ง๊ฐ ์๋ ์ฌ์ด๋ ๋ฉ๋ด๋ฅผ ํ์ฑํํ๋ ์ถ์ฒ ํ์ด์ง๋ก ์ด๋ํ๊ณ ์๋ฌด ๋ฌธ์ ์์ด ๋ชจ๋ ํ์ด์ง๋ก ์ด๋ํ ์ ์์ต๋๋ค.
2๋จ๊ณ: Featured๋ App.ts/html์์ ์ฌ์ด๋ ๋ฉ๋ด๋ฅผ ํ์ฑํํฉ๋๋ค. ๊ฑฐ๊ธฐ์๋ unauth๋ฅผ ํธ์ถํ๋ ๋ก๊ทธ์์ ๋ฒํผ์ด ์์ต๋๋ค.
Unauth๋ Firebase unauth๋ฅผ ์ํํ ๋ค์ ๋ค์์ ์ํํฉ๋๋ค.
this.menu.close();
let nav = this.app.getComponent('nav');
nav.setRoot(Welcome);
3๋จ๊ณ: 1๋จ๊ณ์ ๋์ผํ๊ฒ ๋ค์ ๋ก๊ทธ์ธํฉ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค.
4๋จ๊ณ: ์ฌ์ด๋ ๋ฉ๋ด๋ฅผ ์ด๊ณ ์ฌ์ด๋ ๋ฉ๋ด์์ ํ์ด์ง๋ฅผ ์ ํํ๋ฉด ํ์์ด ์ํ๋์ง ์์ต๋๋ค. ์ฌ์ด๋ ๋ฉ๋ด๋ ๋ซํ์ง๋ง ํ์ด์ง๋ ๊ทธ๋๋ก ์ ์ง๋๊ณ ํ์ ๋ชจ์ ์์ด์ฝ ๋ฒํผ์ด ์ฌ๋ผ์ง๊ณ ํ์์ด ์ํ๋์ง ์์ต๋๋ค.
์คํํ์ด์ง ์ฝ๋:
openPage(page) {
//1. Loop through and set active attribute to False if it doesn't match.
// Set to True if it matches page title
for(var i = 0; i < this.NavPages.length; i++) {
if(this.NavPages[i].title == page.title) this.NavPages[i].active = true;
else this.NavPages[i].active = false;
}
for(var i = 0; i < this.ActivityPages.length; i++) {
if(this.ActivityPages[i].title == page.title) this.ActivityPages[i].active = true;
else this.ActivityPages[i].active = false;
}
for(var i = 0; i < this.PreferencesPages.length; i++) {
if(this.PreferencesPages[i].title == page.title) this.PreferencesPages[i].active = true;
else this.PreferencesPages[i].active = false;
}
//2. close the menu when clicking a link from the menu
this.menu.close();
//3. navigate to the new page if it is not the current page
let nav = this.app.getComponent('nav');
nav.setRoot(page.component);
}
1๋จ๊ณ์์ ๋ฐ์ํ๋ ๊ฒ๊ณผ ์ ์ฌํ ํ์์ด ๊ณ์ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ฌํ ๋จ๊ณ:
์ฌํ ๋จ๊ณ๋ ์์ ํฌํจ๋์ด ์์ต๋๋ค.
Code included above.
๊ธฐํ ์ ๋ณด: (์: ์คํ ์ถ์ , ๊ด๋ จ ๋ฌธ์ , ์์ ๋ฐฉ๋ฒ ์ ์, ์คํ ์ค๋ฒํ๋ก ๋งํฌ, ํฌ๋ผ ๋งํฌ ๋ฑ)
๋ถํํ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ฝ์ ๋ก๊ทธ์ ์ค๋ฅ๊ฐ ํ์๋์ง ์์ต๋๋ค.
์ด๋ค ์ด์จ ๋ฒ์ ? 2.x
ํฐ๋ฏธ๋/cmd ํ๋กฌํํธ์์ ionic info
์คํ: (์๋์ ์ถ๋ ฅ ๋ถ์ฌ๋ฃ๊ธฐ)
Your system information:
Cordova CLI: 6.0.0
Gulp version: CLI version 3.9.0
Gulp local: Local version 3.9.1
Ionic Version: 2.0.0-beta.3
Ionic CLI Version: 2.0.0-beta.19
Ionic App Lib Version: 2.0.0-beta.9
ios-deploy version: 1.8.2
ios-sim version: 5.0.3
OS: Mac OS X El Capitan
Node Version: v0.12.7
Xcode version: Xcode 7.2.1 Build version 7C1002
๊ฐ์ฌํฉ๋๋ค.
๋๋ ๋ค์์ ๋ฐ๊ฒฌํ์ต๋๋ค: 2๊ฐ์ ์ด์จ ํ์ด์ง๊ฐ ๋์ ํ ๋ฒ์ ์กด์ฌํฉ๋๋ค.
๋ด๊ฐ ํ์ํ ํ์ด์ง๋ "์ถ์ฒ" ํ์ด์ง๋ณด๋ค z-index(92)๊ฐ ๋ฎ์ "ํ์"์ ๋๋ค. ๋ฐ๋ผ์ ๋๋ ํ์ ์ค์ด์ด์ผ ํ์ง๋ง "์ถ์ฒ"์ 93์ z-์์ธ์ผ๋ก "ํ์" ์์ ์ค๋ฒ๋ ์ด๋ฉ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง๋ง ์ ๊ฒฝ์ฐ์๋ ๋ก๊ทธ์ธ ํ์๋ ๋ฆฌ๋๋ ์ ๋์ง ์์ต๋๋ค.
์ด๋ฏธ ๋ก๊ทธ์ธ๋์ด ์๊ณ ๋ก๊ทธ์ธ ๋ณด๊ธฐ์ nav.setRoot(TabsPage)
๊ฐ ์๋ฒฝํ๊ฒ ์คํ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ฉ์ ํ๋กํ nav.setRoot(TabsPage)
์ ์ป์ ํ facebook์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค. ๊ฒ๋ค๊ฐ nav.push(TabsPage)
๋ ์๋ฌด ์ผ๋ ํ์ง ์๊ณ ์๋๋ฐ Main์ด ๋ด ํญ ์ค ํ๋์ธ nav.push(Main)
๋ฅผ ํ๋ฉด ์ ๋๋ก ์คํ๋์ง๋ง ํญ๋ฐ๊ฐ ์๊ณ ๋ค๋ก ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค.
๋ํ nav.setRoot(Main)
ํ๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง๋ง ํญ ํ์์ค์ด ์๊ณ ๋ค๋ก ๋ฒํผ์ด ์๋ ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
๋ช ๊ฐ์ง ์ ๋ณด๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ฌธ์์์ setRoot
๊ฐ ์ฝ์์ ๋ฐํํ๋ ๊ฒ์ ๋ณด์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ํ์ต๋๋ค.
this.nav.setRoot(TabsPage)
.then(data => {
console.log(data);
}, (error) => {
console.log(error);
})
์ด๊ฒ์ ๋ก๊ทธ์ธ ํ์ด์ง์ ์ฐฉ๋ฅํ์ ๋ true
๋ฅผ ๋์ก๊ณ ์ด๋ฏธ ๋ก๊ทธ์ธ๋์ด ์์ง๋ง facebook์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ์๋ฌด ๊ฒ๋ ๋์ง์ง ์์ผ๋ฏ๋ก ์ฝ์์ด ๊ฒฐ์ฝ ํด๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์๊ฒ ์ต๋๋ค. ๋ ๋ค๋ฅธ ์
๋ฐ์ดํธ์
๋๋ค. setRoot์์ ํธ์ถ๋๋ setPages ํจ์์ components/nav/nav-controller.js์ Ionic2์ ํต์ฌ์ผ๋ก ์ด๋ํ๋ฉด ์ ํ์ ์ฝ๋ฐฑ์ด ์คํ๋์ง ์์ต๋๋ค.
setRoot -> setPages -> _transition -> _render -> _postRender๋ผ๋ ํจ์์ ํ๋ฆ์ ๋ฐ๋ฅธ๋ค๋ฉด
_render ํจ์์์:
this.loadPage(enteringView, null, opts, function () {
if (enteringView.onReady) {
// this entering view needs to wait for it to be ready
// this is used by Tabs to wait for the first page of
// the first selected tab to be loaded
enteringView.onReady(function () {
enteringView.loaded();
_this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
});
}
else {
enteringView.loaded();
_this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
}
});
๋ด ์ฝ๋๊ฐ enteringView.onReady
์ ์
๋ ฅ๋๊ณ ์ฝ๋ฐฑ์ด ์คํ๋์ง ์์ต๋๋ค.
enteringView.onReady
๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ ์ _postRender
๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ด ์ฑ์ ์ ์๋ํ์ง๋ง ๋๋ฌด ๋๋ฝ์ต๋๋ค.
๋ฌธ์ ๋ ํญ์ ํ์ด์ง๊ฐ ์ค๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ฒฐ์ฝ ์ค๋น๋์ง ์๊ฑฐ๋ ๊ฒฐ์ฝ ์ข์ ์ค๋น ์ํ๋ฅผ ์ป์ง ๋ชปํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด ์ฝ๋์ ์ด๋ฐ ๊ฒ์ด ์์ ์ ์์ต๋๊น? ์๋๋ฉด ๋ฒ๊ทธ์ผ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
๊ฐ์ฌํฉ๋๋ค!
Google ๋๋ Facebook ์ธ์ฆ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@privetr ์ด๊ฒ์ beta4๋ก ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น? ๋ด ๊ฒ์ ์ง๊ธ ์ ์๋ํฉ๋๋ค.
@jorchg ๋ ํ์ธํ ์ ์๋์? ๊ธฐํ๊ฐ ๋๋ฉด :)
์ฌ๋ฌ๋ถ ์๋ ํ์ธ์! ์ด ๋ฌธ์ ๊ฐ beta.4์์ ์์ ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ์์ ์ด์ง๋ง ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์ ๋ ์ง ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์!
์ด ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค. Facebook ๋ก๊ทธ์ธ ์ฝ์ ํ์ ๋ด TabsPage์ nav๋ฅผ ํธ์ํ๊ฑฐ๋ ๋ฃจํธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
Cordova CLI: 6.1.1
Gulp version: CLI version 1.2.1
Gulp local: Local version 3.9.1
Ionic Framework Version: 2.0.0-beta.4
Ionic CLI Version: 2.0.0-beta.24
Ionic App Lib Version: 2.0.0-beta.14
ios-deploy version: 1.8.5
ios-sim version: 5.0.8
OS: Mac OS X El Capitan
Node Version: v5.9.1
Xcode version: Xcode 7.3 Build version 7D175
๋ํ nav.setRoot(x)๋ฅผ ํธ์ถํด๋ ์ ํ์ด์ง๊ฐ ์ค์ ๋ก ๋ํ๋์ง ์๋ ์ํฉ์ ๊ฒช๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ํ์ด์ง์ ์ ๋ ฅ ํ๋์ ํฌ์ปค์ค๋ฅผ ๋ง์ถ๋ฉด ์ฌ๋ผ์ง๊ณ ์ฌ๋ฐ๋ฅธ ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค.
๋ํ setRoot ๋์ ์คํ์ ํธ์ํ๋ฉด ์ ๋ ฅ ํ๋์ ์ด์ ์ ๋ง์ถ ๋๊น์ง ์ ๋๋ฉ์ด์ ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ .
ํธ์ง: ๋ด ์ฑ์ ํ์์ ์ฌ์ด๋ ๋ฉ๋ด๋ก ๋ฐ๊พธ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ ํญ์ ์ฐธ๊ณ ๋ก ๋ฒ ํ 4๋ถํฐ ์ค๋จ๋์์ต๋๋ค.
@daveshirman ํ์ํ๊ธฐ ์ํด ํญ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ํญ๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ผ๋ฉฐ ๋ด ๋ฌธ์ ๋ ์ฌ์ด๋ ๋ฉ๋ด์ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ ๋ค navcontroller๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๊ฒ์ด ์ ์ ์๊ฒ๋ ํจ๊ณผ๊ฐ ์๊ณ ์ฌ๋ฌ๋ถ์๊ฒ๋ ํจ๊ณผ๊ฐ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ํ๋ฐ์ปค๋ฅผ ์์ฑํ๊ฑฐ๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด๋ฉด ionic ํ์ด ๋์ธ ์ ์์ ๊ฒ์ ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. nav.setRoot(MyComponent)
์๋ฌด ๊ฒ๋ ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. --live-reload
๋ฅผ ์ฌ์ฉํ์ฌ Android์์ ์ฑ์ ์คํํ๊ณ ์์๊ณ ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ์คํ๋์ง ์๋๋ค๋ ๊ฒฝ๊ณ ๊ฐ ์์์ต๋๋ค.
0 195445 log deviceready has not fired after 5 seconds.
1 195457 log Channel not fired: onDOMContentLoaded
๋ํ ์ฅ์น๊ฐ ์คํ๋ผ์ธ ์ํ๊ฐ ๋ ๋ ํน์ ํ์ด์ง๋ฅผ ํ์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋๋ฅผ ํ ์คํธํ ์ ์์์ต๋๋ค.
๊ทธ๋์ ๋ง์นจ๋ด Android์์ ๋ด ์ฝ๋๋ฅผ ์คํํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ผ์ด๋ธ ๋ค์ ๋ก๋ ์์ด ์ ์๋ํฉ๋๋ค.
๊ทธ๋์ ๋ผ์ด๋ธ ์ฌ์ฅ์ ๋ชจ๋๊ฐ ์๋ํ์ง ๋ชปํ๊ฒ ํ๋ ๋ฌด์ธ๊ฐ๊ฐ ์์ต๋๋ค. ๋ด ์ข ์์ฑ์ผ๋ก Beta4๋ฅผ ์ฌ์ฉํ๊ณ CLI ๋ฒ์ 2.0.0-beta25.
๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฑ์์ ๋ก๊ทธ์์ํ ํ์๋ ํญ์ด ์ง์๋๊ณ ๋ก๊ทธ์ธํ ๋ ์์ด๊ธฐ ์์ํฉ๋๋ค.
๋ด๊ฐ ์ค๋ช ํ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ๋ฐ์ํ๊ณ ์์ต๋๋ค. ๋๋ ์์ ํ ์์ด ๋ฒ๋ ธ๊ณ ์ด์จ ์ ๋ฐ์ดํธ ํ์ ์๋์ด ์ค์ง๋์์ผ๋ฏ๋ก ์ด ์ค๋ ๋์ ์ต์ ๊ฒ์๋ฌผ์ ์ค๋ช ๋ ๋๋ก ๋ค์ ์์ ํ์ต๋๋ค.
๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํฉ๋๊น?
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ. ๋๊ตฌ๋ ์ง ์ด๊ฒ์ ๋ํ ์์ ์ฌํญ์ ์ฐพ์์ต๋๊น? ์ ๋ ํ์ฌ Ionic [email protected] ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๋ฌธ์ ๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค!
๋ด ๋ฌธ์ ์ ์์ธ์ setRoot๋ง ํธ์ถ๋์์ ๋ .pop()์ ํธ์ถํ๋ ๊ฒ์ด์์ต๋๋ค.
๋ด app.ts์์ ํธ์ถํ๋ ๊ฒ์ด ์์ ์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ค๋ฅธ ํ์ด์ง์์ ํธ์ถํ๋ฉด ์คํจํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ํ ๋ฃจํธ ํ์ด์ง์ ์์ง ์์ ๊ฒฝ์ฐ(์: 3ํ์ด์ง ๊น์ด) setRoot ๋ฉ์๋ ๋ค์ nav.popToRoot()๋ ํธ์ถํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
this.nav.setRoot(xxxx).then(() =>{
this.nav.popToRoot();
//....
});
์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ด๋น๊ฒ์ด์ ์ ์ ๋ง ๊ณ ์ฅ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์์ด ์๋ ํ์ด์ง๋ฅผ ํธ์ํด๋ ์๋ํ์ง ์์ต๋๋ค.
๋ชจ๋ฌ ์ฐฝ์ด ํ์๋ ๋๋ ์ค๋จ๋ฉ๋๋ค.
2016๋
7์ 13์ผ ์ค์ 3์ 59๋ถ์ "scorpnode" [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ด๋น๊ฒ์ด์ ์ ์ ๋ง ๊ณ ์ฅ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด๊ฐ ํ์ด์ง๋ฅผ ๋ฐ๋ฉด
์์์ด ์์ผ๋ฉด ์๋ํ์ง ์์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/driftyco/ionic/issues/5883#issuecomment -232241198,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe/ANnlXmqTT5pf0i-JZNog5F32j8pB785Qks5qVFSZgaJpZM4H0Jz0
.
์๋ ํ์ธ์, ์ด๊ฒ์ 2.0.0-beta.10์์ ์ฌ์ ํ ๋ฐ์ํ๊ณ ์์ต๋๋ค. NavController.setRoot๋ฅผ ํธ์ถํ ํ ๋น ํ๋ฉด์ด ๋ํ๋ฉ๋๋ค. iOS ๊ธฐ๊ธฐ์์๋ง ๋ฐ์
๊ธฐ๊ธฐ ์ ๋ณด:
2.0.0-beta.10 ์์ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. NavController.setRoot๋ก ๋ค์ ํ์ด์ง๋ก ์ด๋ํ ์ ์์ต๋๋ค. ๋ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
this.nav.setRoot(somepage).then(() =>{
this.nav.popToRoot();
});
๊ธฐ๊ธฐ ์ ๋ณด:
CLI v2.0.0-๋ฒ ํ.32.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
this.nav.setRoot(ListPage)
์์ ํํ ๋ฆฌ์ผ ์ฑ์ hello-ionic.ts์์.
v2๋ก ์ฝ๊ฒ ๋ง๋ FB ๋ก๊ทธ์ธ์ ํด๋ณด๊ณ ์ถ์์ต๋๋ค.
๋ค๋ฅธ ๋๊ตฐ๊ฐ?
[ํธ์งํ๋ค]
๋๋ ์ฌ์ฉํ๊ณ ์์๋ค
import {Nav} from 'ionic-angular';
๋์ ์
import {NavController} from 'ionic-angular
';
๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๊ฒ์ด ๋๊ตฌ์๊ฒ๋ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค!
ํ์ฌ๋ก์๋ ์์ ์ฌํญ์ด ์์ต๋๊น?
์๋ ํ์ธ์. ๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ฐ์ปค๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค. Ionic์ ์ฌ์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ฌ๋ฌ๋ถ ์๋ ํ์ธ์! ์ด ๋ฌธ์ ์ ๋ํ ํ๋์ด ์์๋์ง ๊ฝค ์ค๋ ๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ๋ซ์ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ์๊ฒฌ์ ๋ณด๋ด์ฃผ์ญ์์ค. Ionic์ ์ฌ์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋ต์ฅ์ ๋๋ฆฌ์ง ๋ชปํด ์ฃ์กํฉ๋๋ค ๐
๋ด ๋ฌธ์ ๋ cordova-plugin-facebook4 https://github.com/jeduan/cordova-plugin-facebook4 ์ ๊ด๋ จ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด ํ๋ก์ ํธ๋ฅผ beta.10์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ionic-native์์ Facebook ๋ํผ๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ ๋ ๋ฌธ์ ๊ฐ ๋ฉ์ท์ต๋๋ค. ๋ํผ๊ฐ ๋์ผํ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๋งค์ฐ ์ด์ํฉ๋๋ค.
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค!
๋ฌธ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ด ๊ธฐ์ฉ๋๋ค!
์๋ ํ์ธ์ @jgw96 ์ ๋๋ค! ๋ถํํ๋ ์ด๊ฒ์ ์ฌ์ ํ โโ๋ฒ ํ 10์์ ์ ์๊ฒ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ plnkr์์ ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํจ๊ณผ์ ์ผ๋ก, ๋๋ ๋ฃจํธ๋ฅผ "ํญ" ํ์ด์ง๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ์ค์ ํ๋ ๋ก๊ทธ์ธ ๋ชจ๋ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. "ํญ"์ ํ์ด์ง์๋ app.ts์์ ์๋น๋๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ "๋ก๊ทธ์์" ๋ฒํผ์ด ์์ต๋๋ค. app.ts์์ ๋ฃจํธ๋ฅผ "LoginPage"๋ก ์ค์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. "logout"์ ํด๋ฆญํ๋ ๋์ DOM์ ๋ณด๋ฉด ์คํ๋๋ ๊ฒ์ ๋ณผ ์ ์๊ณ ๋ก๊ทธ์ธ ํ์ด์ง๊ฐ ํญ ์๋์ ์์ง๋ง ํ์์ด ๋ฐ์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
http://plnkr.co/edit/n6jCzspnEcjQbl9KF10F
์๊ฐ ๋ด ์ค์ ๊ณ ๋ง์!
์ด #7593์ ๋ํ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ ์ถํ์ต๋๋ค. 2.0.0-beta.10 ๋ฐ 11์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๋ค๋ฅธ ์ ํ์๋ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๋ฒ ํ 11์์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํ์์ this.nav.setRoot(xxx)๊ฐ ํธ์ถ๋ ๋๊น์ง ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ ํ ํ์์ ๋ฌด์์๋ก ์๋ํฉ๋๋ค... ์ ํ์ด์ง๋ฅผ ํธ์ํ ๋ ๋๋๋ก ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค. ๋ณด๊ธฐ๋ ์ ํ์ด์ง ๋์ ํ์ฌ ํ์ด์ง์ ์ ์ง๋ฉ๋๋ค. ํ์
ํ ๋ ํ์์ด ๋ ๋ฒ ํ์
๋๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
NavController ๊ฐ์ฒด์์ ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ DOM์ ํผ๋์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ion-page ํ๊ทธ์ z-index ์์ฑ ๊ฐ์ด ์๋ชป๋์ด ์๋ชป๋ ํ์ด์ง๊ฐ ์์ ์ ์ง๋ฉ๋๋ค.
์ด์ค ํ์ด์ง ํ์ ๋ฐ DOM ํผ๋๊ณผ ๊ด๋ จํ์ฌ @Troknus ์ ์ ํํ ๋์ผํ ๋์์ ๋ด ๋๋ค.
๋ํ ์ฒ์์๋ setRoot๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์ ํ์ ์์๋ ๋ง์น ์ด์ ์ ์์ ํ ์ธ๋ก๋๋์ง ์์ ๊ฒ์ฒ๋ผ ์ด๊ธฐ ๋ฃจํธ ํ์ด์ง๊ฐ ๊น๋ฐ์ ๋๋ค.
@Troknus ๋ฌธ์ ๋ ์์ต๋๋ค. show-page ํด๋์ค๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ํ์ง๋ง ์ข์ ํด๊ฒฐ์ฑ ์ ์๋๋๋ค.
๋ชจ๋ ์ฌ์ดํธ์์ ๊ฒ์ํ์ง๋ง ์๋ฌด๊ฒ๋ ์์ต๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ ์๋ฃจ์ ์ ์๋ํ์ง๋ง ๋ชจ๋ ์คํจ์ ๋๋ค.
๋ฒ ํ 10์์. ํ์์ด ์๋ฒฝํ๊ฒ ์คํ๋ฉ๋๋ค. ๋ฒ ํ 11์์๋ ์ ์๋๋์?
@Troknus ๋ ๊ฐ์ ๋์์ ๋ณด๊ณ ์์ต๋๋ค.
์๋ค ์, @jorchg ๊ฐ ๋งํ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค .. ํญ ์ค๋ฅ๋ฅผ ๊ณ ๋ คํ๋ฉด .. ๋ ๋ฒ์งธ ํธ์ถ ํ ํญ์ผ๋ก ํธ์ํฉ๋๋ค (ํธ์๊ฐ ๋ฐ์ํ์ง๋ง ํ์ฌ ํ์ด์ง๋ ์ฌ์ ํ ๋งจ ์์ ์์)
๋ก๊ทธ์ธ ํ ํญ ๋ณด๊ธฐ๋ก ํธ์ํ๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์๋ ๊ฒฝ์ฐ .. ํญ์ ์์ด์ผ ํ๋ ํ์ด์ง๋ก ํธ์ํ๋ฉด .. ์๋ํฉ๋๋ค. ์ฌ๊ธฐ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
@Troknus ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@schaergeek ์ ๋ฒ ํ 11๋ก ์ ๋ฐ์ดํธ๋์์ผ๋ฉฐ ์๋ํ์ต๋๋ค. ์ฌ๊ธฐ์ ์์ ๊ฐ ์์ต๋๋ค. https://github.com/mariohmol/ionic2-meteor-messenger-password
๋๋ Troknus์ ๋ํด ์์ง์๊ฐ๋ฝ์ ์น์ผ ์ฌ๋ ธ์ง๋ง ๊ฒ์๋ฌผ์ด ๋ ๋ช ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ํ์์ ์ค์ ๋ฌธ์ ์
๋๋ค.
์ฐ๋ฆฌ(๊ทธ๋ฆฌ๊ณ ๋ง์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์๊ฐํฉ๋๋ค)๋ ์ด ๋ฒ๊ทธ๊ฐ ์๋ ํ๋ก๋์
ํ๊ฒฝ์์ ์ด๋ํ ์ ์์ต๋๋ค.
(์ฐ๋ฆฌ๋ ๋ฒ ํ 11์์ Troknus๋ก ์์
ํ๊ณ ์์ผ๋ฉฐ ๋์ผํ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค...).
@joshgarwood์ plnkr ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฒคํธ ํผ๋ธ๋ฆฌ์ฑ์ด ๋ฌธ์ ์ธ๋ฏ? MyApp์ด ์์ ์ ์ํํ๋๋ก ์ธ์ฆ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๋ ๋์ TabPage ๋ด์ NavController ์ธ์คํด์ค๋ฅผ ํตํด ๋ฃจํธ๋ฅผ ์ค์ ํ๋ฉด ์๋ํฉ๋๋ค. MyApp์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํตํด ๋ฃจํธ๋ฅผ ์ค์ ํ๋ ค๊ณ ํ๋ฉด ์ค์ ๋์ง ์์ต๋๋ค. ๊ทธ๋์ ์ฃผ์ ๋๋ ๋ค๋ฅธ NavController ์ธ์คํด์ค์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค...? DI๊ฐ ์ฌ๊ธฐ์์ ์ด๋ป๊ฒ ์๋ํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋น์๋ NavController์ ์ด๋ค ์ธ์คํด์ค๊ฐ ์ฃผ์ ๋๋์ง ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. setRoot(*)๋ฅผ ํธ์ถํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํด์ผ ํฉ๋๋ค.
@Troknus ๊ฐ ๋งํ๋ Z-index ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ์ฌ๋ฌ๋ถ ๋ชจ๋๋ #8042 ๋ฌธ์ ์ ๊ด์ฌ์ด ์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ setRoot(*)๋ ์ ํ ํธ์ถ๋์ง ์์ต๋๋ค.
์ค์ @jgw96 ๋ ์ ๋๊ธ ์ ๋ฐฉ๊ธ ์ฝ์๋๋ฐ ๋๋ค NavController ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ๊ฒ ๊ฐ์๋ฐ์...?
๊ทธ๋๋ Z-์ธ๋ฑ์ค์ ๋ฒ๊ทธ๊ฐ ์๋ค๋ ์ฌ์ค์ ๋ณํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ beta11๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค ...
DOM์ด ํผ๋์ค๋ฝ๊ฑฐ๋ ํ์ด์ง๊ฐ ๊น๋ฐ์ด๋ ๊ฒ์ ์ฌํํ๋ ๋ค๋ฅธ plnkr์ด ์๋ ์ฌ๋์ด ์์ต๋๊น? @joshgarwood์ plnkr ์๋ ํธ์๋ ํ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
@rcjsuen Beta10 ๋ฐ Beta11์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค. setRoot๊ฐ ์๋ํ ๋๋ก ์๋ํ๋์ง ํ์คํ์ง ์์ง๋ง ํ์ฌ๋ก์๋ ์๋ํฉ๋๋ค.
์๋ ์ํจ
private initializeApp(): void {
this.platform.ready().then(() => {
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.nav.setRoot(TabsPage);
} else {
this.nav.setRoot(LoginPage);
}
});
StatusBar.styleDefault();
});
}
}
์ผํ๊ณ ์๋
private initializeApp(): void {
this.platform.ready().then(() => {
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.setRoot(TabsPage);
} else {
this.setRoot(LoginPage);
}
});
StatusBar.styleDefault();
});
}
private setRoot(newRootPage: any){
this.rootPage = newRootPage;
}
}
@Vanclief ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ ์ํ์ด ์๋ฃจ์
์กฐ์ฐจ๋ ์ ์๊ฒ ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
๋ด ์ฝ๋๋ ์ฒ์์๋ ๊ทํ์ ์ฝ๋์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ionic 2 rc0 ๋ฐ angular 2.0.1๋ก ์
๊ทธ๋ ์ด๋ํ๋ ค๊ณ ์๋ํ์ง๋ง firebase(๋๋ angularfire)์์๋ ์ ๋๋ก ์๋ํ์ง ์์ ๋ค์์ผ๋ก ๋กค๋ฐฑํ์ต๋๋ค.
{
"@angular/common": "2.0.0-rc.4",
"@angular/compiler": "2.0.0-rc.4",
"@angular/core": "2.0.0-rc.4",
"@angular/forms": "^0.2.0",
"@angular/http": "2.0.0-rc.4",
"@angular/platform-browser": "2.0.0-rc.4",
"@angular/platform-browser-dynamic": "2.0.0-rc.4",
"@angular/router": "^2.0.0-rc.2",
"firebase": "^3.3.0",
"ionic-angular": "2.0.0-beta.11",
"ionic-native": "1.2.2"
}
์ญ์ ๋ node_modules/๊ฐ npm์ ์ค์นํ๋๋ฐ ์ด์ ์ด ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค.
์ด์ํ ์ ์ this.rootPage๋ฅผ ์ฝ๋ฐฑ ํจ์ ์ธ๋ถ์ ๊ฒ์ผ๋ก ์ค์ ํ๋ฉด ์ฑ์ด ํด๋น ํ์ด์ง๋ก ์ด๋ํ๋ค๋ ๊ฒ์ ๋๋ค. ์
this.setRoot(TeamPage);
firebase.initializeApp(this.firebaseConfig);
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.setRoot(TeamPage); // If there's a user take him to the Teams page.
} else {
this.setRoot(LoginPage); // If there's no user logged in send him to the LoginPage
}
});
์ฌ์ฉ์๋ฅผ TeamPage๋ก ํ์ํ ๋ค์ ์ฌ์ฉ์๋ฅผ LoginPage๋ก ํ์ํฉ๋๋ค(์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ).
ํ์ง๋ง
firebase.initializeApp(this.firebaseConfig);
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.setRoot(TeamPage); // If there's a user take him to the Teams page.
} else {
this.setRoot(LoginPage); // If there's no user logged in send him to the LoginPage
}
});
์ฌ์ฉ์๋ฅผ ์ด๋์๋ ํ์ํ์ง ์์ต๋๋ค.
@ํผํฐํ์ดํผ
๋๋ ์ ๋ฐ์ดํธํ์ง ์์์ง๋ง RC0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ๋๋ฉด ์ฌ๋ผ์ง๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ์ต๋๋ค. ๋ด ํ๋ก์ ํธ ์ค ํ๋์ ๊ฒฝ์ฐ Firebase๋ ์ฌ์ฉํ๊ณ ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ด์ ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค.
์ ๋ AngularFire๋ฅผ ์ฌ์ฉํ์ง ์์ง๋ง ์ด ํํ ๋ฆฌ์ผ์์ ๋ค๋ฃน๋๋ค: https://playcode.org/getting-started-with-ionic-2-rc0-firebase-3-angularfire-2/
@๋ฐดํด๋ฆฌํ
๊ฐ์ฌํฉ๋๋ค. ์ด๋ฏธ ์ด ์ ๊ทผ ๋ฐฉ์์ ์๋ํ๊ณ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ionic serve
๋ฅผ ์ํํ ๋ ํ์ผ์ ๋ณผ ๋ ์ถฉ๋ํ๋ ionic RC_0๊ณผ ๊ฒฐํฉ๋ ๋
ธ๋ ๋ชจ๋์์ ํดํน์ ํด์ผ ํ๋ค๋ ์ฌ์ค ๋๋ฌธ์ ์
๊ทธ๋ ์ด๋๋ฅผ ์ค๋จํ๊ณ ์ด์ ๋ฒ์ ์ ๊ณ ์ํ๊ฒ ๋์์ต๋๋ค.
์ด์จ๋ firbase.auth.currentUser๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํ ๋ค์ rootPage๋ฅผ ์ค์ ํ์ฌ ์ด์ ์ ์ค์ ํ์ง ์์ ์ด์ ์ฝ๋ฐฑ์์ ๋ฃจํธ ํ์ด์ง ์ค์ ์ด ์๋ํ์ง ์๋ ์์์ ์ธ๊ธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
const page = firebase.auth().currentUser ? TeamPage : LoginPage;
this.setRoot(page);
firebase.auth().onAuthStateChanged(user => {
// If there's a user take him to the Teams page otherwise send him to LoginPage
const page = user ? TeamPage : LoginPage;
this.setRoot(page);
});
๊ทธ๋ฐ ๋ค์ ๋์ผํ ํ์ด์ง๋ฅผ ๋ ๋ฒ ํ์ํ์ง ์๋๋ก setRoot ๋ฉ์๋๋ฅผ ํ์ธํฉ๋๋ค.
์ด๊ฒ์ ๋ํ ํดํน์ด๋ฉฐ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ต๋๋ค. ๋ถํํ๋ ๋ค์ ์ฃผ์ ์ด ๋ฌธ์ ์ ๋ํ ์ฌ์ธต ์กฐ์ฌ์ ๋ค์ด๊ฐ ์๊ฐ์ด ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ ๋๋ค. this.nav.push(...)๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์๋ํ์ง๋ง this.nav.setRoot(...)๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์ ์ดํ์๋ ์๋ํ์ง ์์ต๋๋ค. ๋ด ์ด์จ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Your system information:
Cordova CLI: 6.3.1
Gulp version: CLI version 3.9.1
Gulp local:
Ionic Framework Version: 2.0.0-rc.0
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
OS: Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS
Node Version: v4.6.0
package.json์์
"dependencies": {
"@ionic/storage": "^1.0.3",
"firebase": "^3.4.1",
"ionic-angular": "^2.0.0-rc.0",
"ionic-native": "^2.2.2",
"ionicons": "^3.0.0"
},
@jgw96 ์ด๊ฒ ์ ๋ซํ์์ง? ๋ถ๋ช ํ ์ด๊ฒ์ setRoot๊ฐ ์ ๋๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฆฐ ๊ฒฝ์ฐ์ ๋๋ค.
@daveshirman , ๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์๊ณ ํ์ ๋ฌธ์ ๊ฐ ์๋์ง๋ง ์ฌ๊ธฐ์ ๋ด๊ฐ ํด๊ฒฐ ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ด app.ts์์ ์ด๊ฒ์ ๊ฐ์ง๊ณ
Firebase.initializeApp(๊ตฌ์ฑ);
platform.ready().then(() => {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
// If there's a user take him to the TabsPage page.
this.rootPage = TabsPage;
} else {
// If there's no user logged in send him to the LoginPage
this.rootPage = LoginPage;
}
});
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
StatusBar.styleDefault();
});
์์ if ๋ฌธ์ // ์ฌ์ฉ์๊ฐ ์๋ ๊ฒฝ์ฐ SET THE ROOTPAGE TO TabsPage ํ์ด์ง๋ฅผ ๋งํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด LoginPage์ ๋จ์ ์์ด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ Firebase ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ if ๋ถ๋ถ์ด ์คํ๋ฉ๋๋ค(์ฆ, rootPage๋ก ์ด๋ํ์ง๋ง Facebook์ ์ฌ์ฉํ ๋๋ else ๋ถ๋ถ์ด ์คํ๋ฉ๋๋ค(์ฆ, ๋ก๊ทธ์ธ ํ์ด์ง
์ ๋ ์ด๋ ๊ฒ ํด๊ฒฐํ์ต๋๋ค.
ํ์ด์ค๋ถ ๋ก๊ทธ์ธ() {
//ํ์ด์ค๋ถ์ ๋ก๊ทธ์ธ
Facebook.login(['์ด๋ฉ์ผ']).then((๊ฒฐ๊ณผ=>{
// ์๊ฒฉ ์ฆ๋ช
์ ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉํ์ฌ Firebase์ ๋ก๊ทธ์ธํฉ๋๋ค.
์๊ฒฉ ์ฆ๋ช
= firebase.auth.FacebookAuthProvider '์๊ฒฉ ์ฆ๋ช
'
// firebase์ ๋ก๊ทธ์ธํ๋ฉด ํ์์ด ์๋ํ์ง ์์ app.ts์์ //๋ช
๋ น๋ฌธ์ ELSE ๊ฒฝ๋ก๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋ฐํ firebase.auth().signInWithCredential(์๊ฒฉ ์ฆ๋ช
);
})).then((์ฌ์ฉ์)=>{
//alert(firebase.auth().currentUser.uid);
this.userProfileRef.child(firebase.auth().currentUser.uid).set({
id:firebase.auth().currentUser.uid,
์ด๋ฉ์ผ: ์ฌ์ฉ์.์ด๋ฉ์ผ,
๋์คํ๋ ์ด ์ด๋ฆ: ์ฌ์ฉ์.๋์คํ๋ ์ด ์ด๋ฆ,
profilePictureURL:user.photoURL
});
this.navCtrl.setRoot(TabsPage);
}).catch((error)=>{
alert(error);
})
}
์์ ์ฝ๋์์ ์ผ์ด๋ ์ผ์
์ฒซ ๋ฒ์งธ๋ก ๋ด๊ฐ ํ๋ ํ์ด์ค๋ถ์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
Facebook.login(['์ด๋ฉ์ผ']).then((๊ฒฐ๊ณผ=>
๋ ๋ฒ์งธ๋ก Facebook ๋ก๊ทธ์ธ ๊ฒฐ๊ณผ์์ ๋ณด๋ธ accessToken์ ์ฌ์ฉํ์ฌ Firebase์ ๋ก๊ทธ์ธํ๋ ๋ฐ ๋์์ด ๋๋ ์๊ฒฉ ์ฆ๋ช
์ ์ค์ ํด์ผ ํฉ๋๋ค.
let ์๊ฒฉ ์ฆ๋ช
= firebase.auth.FacebookAuthProvider '์๊ฒฉ ์ฆ๋ช
' ;
์ธ ๋ฒ์งธ๋ก ์ค์ ํ ์๊ฒฉ ์ฆ๋ช
์ผ๋ก Firebase์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
๋ฐํ firebase.auth().signInWithCredential(์๊ฒฉ ์ฆ๋ช
);
์ฐธ๊ณ : ์ด๊ฒ์ด this.navCtrl.setRoot(TabsPage); ์ฌ์ฉ์๊ฐ ์์ง Firebase์ ๋ก๊ทธ์ธํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์์ต๋๋ค.
์ด์ ์ฝ๋์ then() ๊ฒฝ๋ก์์ rootPath๋ก ์ด๋ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ facebook appId์ appSecrete๊ฐ firebase>authentication>facebook ํจ๋์ ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@OyebisiJemil ๋น์ ์ด ํ ์ผ์ ๋ํ ๊ธด ์ค๋ช ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ setRoot๊ฐ facebook์ด๋ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ์ ๋๋ก ์๋ํ์ง ์๋๋ค๋ ์ ์์ ๊ฐ๋ ์ ์ผ๋ก ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค. ๊ทธ๋๋ ๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค. ๋์ผํ ์ค๋ช ์ผ๋ก ์ด๋ ค ์๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋ ํ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ผ๋ฉด ์ ๋ฉ๋๋ค.
๋ถ๋ช ํ ์๋ ๊ฒ:
๋๋ ๋ํ ๋งค์ฐ ๋น์ทํ ์ํฉ์์ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ setRoot(view) ๋์ push(view)๋ก ์ ํํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ณ ์ค์ ๋ก ๋ด ์ฑ ํ๋ฆ๊ณผ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. nav.push(view)๋ ์ ์๋ํ์ง๋ง nav.setRoot๋ ์๋ํ์ง ์์ต๋๋ค. ๋๊ตฌ๋ ์ง ์ ์์ด ์์ต๋๊น?
๋๋ ์ฌ์ ํ ์ต์ ๋น๋์์ ์ค๋๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
๋ก๊ทธ ์์() {
this.authData.logoutUser().then(() => {
this.nav.setRoot(๋ก๊ทธ์ธ ํ์ด์ง);
});
}
์๋ํ์ง ์์ต๋๋ค. ๋์์ฃผ์ธ์. Thnx. ๋ฆฌ์ค
setRoot ๋์ push ์ฌ์ฉ...
@jgw96 , @adamdbradley ์ด๊ฒ์ ์ฌ์ ํ โโ์ค์ํ ๋ฌธ์ ์ ๋๋ค. ๋ค์ ์ด๊ณ ์ด์ ํ๋ฅผ ์ง์ ํ์ญ์์ค. ์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ผ๋ฉฐ ์ด๋ ์ฑ์ ํ์ ๊ธฐ๋ฅ์ ๋๋ค.
@dejancentelj ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค.
@lisaiceland ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ ์ ์์ ๋ฐ๋์ต๋๋ค.
https://forum.ionicframework.com/t/cant-access-rootnav-after-upgrade-to-beta-11/59889/15?u=niallr
@niallr12 @daveshirman ์ด๊ฒ์ด RC3์์ ์ฌ์ ํ ๋ฌธ์ ์ ๋๊น?
@manucorporat ์ด๊ฒ์ด RC3์ ๋ฌธ์ ์ธ์ง ํ์คํ์ง ์์ง๋ง ๋ณ๊ฒฝ ๋ก๊ทธ์ ์์ ์ฌํญ์ด ํ์๋์ง ์์ต๋๋ค. ๋๋ ๋ด ์์ ์ฌํญ์ ๋ง์กฑํ๊ณ ์ด์จ๋ ์ ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ํ๋ค๋ฉด RC3์์ ํ ์คํธํ ์ ์์ต๋๋ค.
@niallr12 ๊ธ์, ๋๋์ด ํน์ ๋ฌธ์ ๋ฅผ ์ฌํ ํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์๋ง์ ์์ ์์ ๊ณผ ํ ์คํธ๋ฅผ ํตํด NavController๋ฅผ ๊ฐํํ๋ ๋ฐ ๋ช ์ฃผ๋ฅผ ๋ณด๋์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด: ๋ฏธ์น ํ๋ฆ์ผ๋ก ํ์ ์คํ์ ์คํธ๋ ์ค๋ฅผ ์ฃผ๋ ์ต์ ์ ๊ฒฝ์ฐ ์ ๋๋ค.
RC3์ ๋ํด ์ด ๋ฒ๊ทธ๋ฅผ ํ ์คํธํ ์ ์๋ค๋ฉด ๋งค์ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@manucorporat ์ฌ์ ํ rc3์์ ๋ฌธ์ ๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ ๋ฃจํธ๋ฅผ ์ค์ ํ ๋ ํ์ฌ ๋ณด๊ธฐ๋ฅผ ๋ซ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ๋ณด๊ธฐ๋ฅผ ๋ซ๊ณ ๋ฃจํธ๋ฅผ ์ค์ ํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ณด๊ธฐ๋ฅผ ํธ์ํ๋ฉด ์์ ํ ์ ์๋ํฉ๋๋ค.
์ผ,
์ด์ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ์ฝ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ด ๋๋ต์ด ๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋ ์ง ํ์ ํ ์ ์์ง๋ง ๋ด ํ๋ก์ ํธ์์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์์ ํ์ ์คํ์ ์ฐธ์กฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ค์์ผ๋ก ์ด๋ํ ์ ์์์ต๋๋ค. ํ์ ํ์ด์ง ์:
์์ ํ์ด์ง(๋ฃจํธ ํ์ด์ง)
gotoFeature(): void {
this.navCtrl.push(feature);
}
๊ธฐ๋ฅ ํ์ด์ง( ํญ ํฌํจ )
logout(): void {
this.navCtrl.parent.parent.pop() // back to welcome
}
ํญ์๋ ๊ณ ์ ํ ํ์ ์คํ์ด ์์ผ๋ฏ๋ก ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ฆ, ํญ ํ์ ๊ฐ์ฒด ์์ค์์ setRoot ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๋ค๋ฅธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ๋์ง๋ง ๋ฐ๋ฅ๊ธ์ ํญ ๋ธ๋ก์ ๊ณ์ ํ์๋ฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ํ ๊ณต๊ธ์์์ setRoot ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. App setRoot ๋ฐ ๋ณ๊ฒฝ๋ ํ์ด์ง์ด์ง๋ง ์๋ฃ๋๋ฉด ํ์(๋ฉ๋ด)์ด ๋นํ์ฑํ๋ฉ๋๋ค.
๊ณต๊ธ์์ ๋ด ์ฝ๋์ ๋๋ค.
private _leaveGroup(user: modelUser, room: modelRoom): Promise<any> {
return new Promise((resolve, reject) => {
let loading = this.loadingCtrl.create({dismissOnPageChange: false});
loading.present();
this.ref.child(room.id).child('users').child(user.id).remove()
.then(() => this.navCtrl.setRoot(PageDashboard))
.then(() => loading.dismiss())
.then(() => resolve())
.catch(err => loading.dismiss().then(() => reject(err)));
});
}
๋ด ์ ๋ณด์ผ
์ฝ๋ฅด๋๋ฐ CLI: 6.3.1
Ionic ํ๋ ์์ํฌ ๋ฒ์ : 2.0.0-rc.3
Ionic CLI ๋ฒ์ : 2.1.4
Ionic ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ : 2.1.2
Ionic ์ฑ ์คํฌ๋ฆฝํธ ๋ฒ์ : 0.0.45
iOS ๋ฐฐํฌ ๋ฒ์ : 1.9.0
ios-sim ๋ฒ์ : 5.0.9
OS: ๋งฅ OS X ์์๋ผ
๋ ธ๋ ๋ฒ์ : v6.9.1
Xcode ๋ฒ์ : Xcode 8.1 ๋น๋ ๋ฒ์ 8B62
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค. ๊ทธ๋ฌ๋ ์ฃผ์ด์ง ์๊ฐ์ setrroot ๋ฌธ๋ง ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ฌ๋ฌ setroot ๋ฌธ์ด ์ฃผ์ด์ง ์๊ฐ, ์ฆ ๋ ๋๋ง ์ ์ ์คํ๋๋ฉด Ionic์ด ์ฌ๋ฌ ํ์ด์ง๋ฅผ ์์ฑํ์ฌ ์ ๊ฒฝ์ฐ์๋ ํ์์ด ์ค๋จ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ RC4์์ ๋ฏ์ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ ๋ก๊ทธ์ธ ํ์ด์ง์์ ๋ฉ๋ด/๋์๋ณด๋๋ก ์ง๊ธ ๋ฃจํธ๋ฅผ ์ค์ ํ ๋ ๋ก๊ทธ์ธ ํ์ด์ง๊ฐ ํค๋์ ๋ค๋ก ๋ฒํผ์ ํ์ํ๋ ๋ทฐ ์คํ์ ๋จ์ ๋ชจ๋ ์ข ๋ฅ์ ํผ๋์ ์ผ๊ธฐํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋์ผํ ์ ํ์ ๋ฌธ์
๋๋ ์ด๊ฒ์ ์ค๋ช ํ๊ธฐ ์ํด location.reload๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์๋ก์ด ์ฌ์ฉ์ ๋ฑ๋ก ์ค์๋ง ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋์ฐํ ์ฌ์ฉ์ ๊ฒฝํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ... ์ด ๋ฌธ์ ๊ฐ ๋ง์ ์ด์ ๋ก ์ข ๋ฃ๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ์ฌ๋๋ค์ ์ฌ์ ํ โโ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค.
๋ก๊ทธ์์ ์ด๋ฒคํธ๋ฅผ ์์ฑํฉ๋๋ค.
// app.component.ts
events.subscribe('logout', () => {
localStorage.removeItem('token');
this.rootPage = LoginPage;
});
์ง๊ธ ๋ก๊ทธ์์:
// pages/home/home.ts
logout() {
this.events.publish('logout');
}
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ. ๋๊ตฌ๋ ์ง ์ด๊ฒ์ ๋ํ ์์ ์ฌํญ์ ์ฐพ์์ต๋๊น? ์ ๋ ํ์ฌ Ionic 2.0.0-rc.4๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๋ฌธ์ ๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค!
์๋ ,
//์ด ํด๋์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค. '@angular/core'์์ { Component, ViewChild } ๊ฐ์ ธ์ค๊ธฐ; import { Platform, MenuController, Nav } from 'ionic-angular'; ๋ด๋ณด๋ด๊ธฐ ํด๋์ค MyApp { //์ด ์์ฑ์ ์ค์ @ViewChild(Nav) ํ์: ํ์; //์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๋ฉด ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. private openPage(ํ์ด์ง: ๋ชจ๋ ): ๋ชจ๋ { //ํ ํฐ ํ์ธ this.loggedIn = this.service.canActivate(); if (!this.loggedIn) { //๊ธฐ๋ก๋์ง ์์ this.nav.setRoot(๋ก๊ทธ์ธ ํ์ด์ง); } ๋ ๋ค๋ฅธ { //๋ก๊ทธ this.nav.setRoot(ํํ์ด์ง); } this.menuCtrl.close(); }
ํฌ์น!
๋ด ์ฑ: https://github.com/siteslave/chiangmai-demo-app/blob/master/src/pages/main/main.ts#L96 -L100
import {
...
App,
...
} from 'ionic-angular';
//=====================//
logout() {
localStorage.removeItem('token');
let nav = this.app.getRootNav();
nav.setRoot(LoginPage);
}
๋๊ตฌ๋ ์ง ์ด๊ฒ์ ๋ํ ์ต์ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๊น?
@joshuaohana์ ๋์ผํ ๋ฌธ์ ์ ๋๋ค.
facebook ๋ก๊ทธ์ธ ์ ์ setRoot๋ฅผ ์ํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
setRoot AFTER facebook์ ์ํํ๋ฉด @joshuaohana์ ๋์ผํ ๋์์ด ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฌ ํด์.
(๋ฐฉ๊ธ ์ด ๋ณต์ ๋ณธ์ ์ฐพ์์ต๋๋ค: https://github.com/driftyco/ionic/issues/6297)
๋ก๊ทธ์์ ์์ ์ ์ํ ์ด๋ฒคํธ๋ฅผ ์์ฑํฉ๋๋ค.
๋ํ ๋ค๋ฅธ ์์ ์๋ฃจ์ ์ด ์๋ nav์ ๋ํ ์์ธํ ์ค๋ช ์ ์๋์์ ์ฐพ์ผ์ญ์์ค.
https://webcake.co/exploring-nav-hierarchy-in-the-ionic-2-tabs-page/
์๋์ ๋ถ์ฌ๋ฃ์ ์ฝ๋์ ๊ฐ์ฅ ๊ฐ์น ์๋ ๋ถ๋ถ์ ๋๋ค.
'ionic-angular'์์ { ์ฑ } ๊ฐ์ ธ์ค๊ธฐ;
...
์์ฑ์(๋น๊ณต๊ฐ _app: ์ฑ) {}
๋ก๊ทธ ์์() {
...
// Now I'll access the root NavController for the app,
// and use that to reset the nav stack
const root = this._app.getRootNav();
root.popToRoot();
// since I only have two items in the root NavController,
// I could also have run root.pop() instead
}
...
์ ์ ๊ฐ์ ์ค์๋ฅผ ํ์ ๋ถ๋ค๋ ๊ณ์คํ ๋ฐ์.
"setRoot"๋ฅผ ํตํ ํ์์ ์ฌ์ฉํ์ง๋ง ๋์์ "[root]=.." ๋ฐ์ธ๋ฉ์ HTML ํ ํ๋ฆฟ์์ ๊ณ์ ์ฌ์ฉํ ์ ์๋ค๋ ์ฌ์ค์ ๋์ณค์ต๋๋ค. ๋ ์ ๋ณด๋ฅผ ๋ค์ ๋๊ธฐํํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ชจ๋ธ ๋ฐ์ธ๋ฉ์ ์ ๊ฑฐํ๊ณ API๋ฅผ ํตํด์๋ง ๋ฃจํธ๋ฅผ ๊ด๋ฆฌํ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค, ๋ง์ดํด
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
@ly-dev ์๋ฃจ์
์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ๋ฐฉ๊ธ this._app.getRootNav().setRoot(EntryPage);
ํ๊ณ ์๋ํฉ๋๋ค.
๋จผ์ navController์ ๊ฐ์ ์์น์ธ ionic-angular์์ Nav๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
import { App, NavController } from 'ionic-angular';
๊ทธ๋ฐ ๋ค์ ์์ฑ์์ ์ ๊ณตํ์ญ์์ค.
constructor(public navCtrl: NavController, public appCtrl: App)
์ด์ rootnav์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
this.appCtrl.getRootNav().setRoot(YourComponent);
@AmitPoojary ๊ทธ ์๋ฃจ์ ์ด ์๋ํ์ง ์์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ํญ์ผ๋ก ์ด๋ํ ๋.
์ : ์ฌ๋ฌ ํ์ด์ง๊ฐ ์๋ ํ ํญ. ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ํด๋ฆญํ ๋. ๊ทธ๋ฐ ๋ค์ ๋์๊ฐ์ง ์๊ณ ๊ณ์ ํญ์ผ๋ก ์ ํํ ๋ค์ ๋ก๊ทธ์์ํ๋ฉด ์๋ก ๊ณ ์น ๋๊น์ง ๊ณ์ ํญ์ ์ ์ง๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ํ ํญ์ ํด๋ฆญํ๊ณ ๋ ์ด์ ์ด๋ํ์ง ์์ผ๋ฉด ์ฌ์ฉ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๊ทธ์์๋๋ค๋ ๊ฒ์ ์์๋์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํ ํญ์ ๋ ๋ฒ์งธ ํ์ด์ง๋ก ์ด๋ํ ๋ dom์ ๋ง์ ํญ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ ๋ถ๋ผ๊ณ ์๊ฐํ๊ณ getRootNav
๋ ๊ทธ๋ ๊ฒ ๋ฉ๋ฆฌ ๋์๊ฐ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ ๋๋ค.
์, ์ฌ์ ํ Tab์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฃผ์ ๋ฐฉ๋ฌธ ํ์ด์ง๋ก ์ฌ์ฉํ๋ ์ ์๊ฒ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. tabComponent ๋ด์ ๋ชจ๋ ํ์ด์ง์์ _navCtrl.setRoot()๋ฅผ ํธ์ถํ๋ฉด ํด๋น ํ์ด์ง๋ง rootPage๋ก ์ค์ ๋์ง๋ง ํ๋จ์ ํญ ์ธํฐํ์ด์ค๋ ์ ์๋ฆฌ์ ์ ์ง๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํญ์ ๋ค๋ฅธ ํ์ด์ง์ ๊ณ์ ์ก์ธ์คํ ์ ์์ต๋๋ค!
์ด์ ๋ํ ์ฌ๋ฐ๋ฅธ ํด๊ฒฐ์ฑ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
let _nav = this.app.getRootNav();
_nav.setRoot(LoginPage);
๋๋ ํ ์ค
this.app.getRootNav().setRoot(LoginPage);
๋ด ์ ์ฑ์๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฅ์น์ ๋ํ ์ฒซ ๋ฒ์งธ ํธ์๋ง ์๋ํ๋ฉฐ, ์ฌ๊ธฐ์ ์์ผ ์ฐ๊ฒฐ์ ๋ง๋ค๊ณ ์ผ๋ถ ์์ผ ํต์ ์ ์ํํฉ๋๋ค. ์ฑ์ ์ข ๋ฃํ๊ณ ๊ฐ๋ฐ ์ปดํจํฐ์์ ์ฐ๊ฒฐ์ ๋๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์คํํ๋๋ฐ ์๋ฒ ์ธก์์ ์ฐ๊ฒฐ ํ๋์ด ๋ณด์ด์ง ์์์ต๋๋ค. ๋๋ uiktiomasfeliz ๊ถ์ฅ ์ฌํญ์ ๊ตฌํํ์ง ์์์ผ๋ฉฐ ์ค๋ ๋์ค์ ์๋ํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๊ทธ๋ฅ ๋จธ๋ฆฌ๋ฅผ ์๋ก.
์. ๋๋ ๋ํ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ฑ์ทจํ์ต๋๋ค.
this.app.getRootNav().setRoot(SetupPage);
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฅ์น์ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค ...
(getRootNav)๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ฉ๋๋ค. ๋์ getRootNavById๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ทธ๋์... ์ด ์ค๋ฅ๋ ์์ ๋์ง ์์๊ณ ์ด์ ํจ์น๋ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. :/
this.app.getRootNav().setRoot(LoginPage);
์ด๊ฒ์ ๋๋ฅผ ์ํด ๊นจ์ด ์์ง ์์ต๋๋ค ...
์ด๊ฒ์ ์ ์ด๋ ๋๋ฅผ ์ํด ๋ฆด๋ฆฌ์ค 3.5.3์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค.
์ฐํ, 3.5.3์ ๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ์์ ํ์ง ์์์ต๋๋ค.
์ฌ๋ฌ๋ถ, ์ฌ์ ํ setRoot() ํ์ ์๋ํ์ง ์๋ ์ด ๋ฌธ์ ์ฌ์ด๋๋ฐ๊ฐ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ์ฌ์ฉํฉ๋๋ค : this.navCtrl.setRoot(HomePage);
์ฌ๊ธฐ์์ ๋ชจ๋ ์๋ฃจ์
์ ์๋ํ์ง๋ง ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด์จ 3.10.3
๋๋ ๊ทธ๋ ๊ฒ ํด๊ฒฐํ๋ค
๊ฐ์ ธ์ค๊ธฐ ์ฑ
'ionic-angular'์์ { IonicPage, NavController, Nav, App } ๊ฐ์ ธ์ค๊ธฐ;
๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์ฌ์ฉ
const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("LoginPage");
์๋ ํ์ธ์, ์ ๋ Android๊ฐ ์ค์น๋ iPhone4 ๋ฐ ๊ธฐํ ๊ธฐ๊ธฐ์์ Hello World ์ฑ์ ํ ์คํธํ๊ณ ์์ต๋๋ค.
๋ง์ง๋ง Ionic ๋ฐ CLI ๋ฒ์ .
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ iPhone์ ๊ฒฝ์ฐ setRoot ํธ์ถ์ด ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ฌดํจ onGoClick(){
// ์ด ์ค์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
this.navCtrl.setRoot(ํํ์ด์ง);
// ์ด ์ค์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
this.app.getRootNav().setRoot(ํํ์ด์ง);
}
์ด๊ฒ์ ๋ํ ์๋ํ์ง ์์ต๋๋ค
var ๋ฃจํธ = this.appCtrl.getRootNav();
root.setRoot(ํํ์ด์ง);
root.popToRoot();
๋ฌธ์ ์ธ์ฌ.
์๋ ํ์ธ์ @alemdg ์ ์๊ฐ์๋ ๊ฒฝ๋ก๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ ์คํธ์ฒ๋ผ ์ ์ํ๊ฑฐ๋ ๊ฐ์ฒด์ฒ๋ผ ์ ์ํ๋ ๊ฒฝ์ฐ,
๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด ํ ์คํธ( "HomePage" )์ฒ๋ผ ํธ์ถํ๊ณ ์ด ๋ณ์๋ฅผ ์์ฑํ์ญ์์ค.
const ๋ฃจํธ = this.app.getRootNav();
๋ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ญ์์ค.
const ๋ฃจํธ = this.app.getRootNav();
root.popToRoot();
root.setRoot("ํํ์ด์ง");
์ด ๊ฐ์ฒด ๊ฐ์ ธ์ค๊ธฐ
'ionic-angular'์์ { IonicPage, NavController, NavParams, Nav, App } ๊ฐ์ ธ์ค๊ธฐ;
๊ฑด์ค์(
๊ณต๊ฐ ์ฑ: ์ฑ
) {
์ฒซ ๋ฒ์งธ๋ popToRoot์ด๊ณ ๋ ๋ฒ์งธ๋ ์ ๋ฃจํธ๋ฅผ ์ ์ํฉ๋๋ค.)
๋ฌดํจ onGoClick(){
// ์ด ์ค์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
this.navCtrl.setRoot( "ํํ์ด์ง" );
// ์ด ์ค์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
root.popToRoot();
root.setRoot( "ํํ์ด์ง" );
}
์ด๊ฒ์ ๋ํ ์๋ํ์ง ์์ต๋๋ค
const ๋ฃจํธ = this.appCtrl.getRootNav();
root.popToRoot();
root.setRoot( "ํํ์ด์ง" );
@spidermay ๋ต๋ณ ๊ฐ์ฌํ์ง๋ง ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
๋๋ ์์
ํ๋ค
'ionic-angular'์์ { IonicPage, NavController, NavParams, Nav, App } ๊ฐ์ ธ์ค๊ธฐ;
๊ทธ๋ฆฌ๊ณ ์คํ
const ๋ฃจํธ = this.app.getRootNav();
root.popToRoot();
root.setRoot("ํํ์ด์ง");
ํ์ง๋ง ๋ฒํผ์ ๋ ๋ฒ ํด๋ฆญํ๋ฉด ์๋ํฉ๋๋ค....
์๋ก ๊ณ ์นจ์ด ๋๋ฝ ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค ....
๋๋ ์ด๊ฒ์ 3.7.1์์ ๋ณด๊ณ ์๋ค.
๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์๋ํ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
this.menu.close();
this.nav.setRoot(ํํ์ด์ง).then(()=>{
this.nav.popToRoot();
}).catch(์ค๋ฅ=>{
๊ฒฝ๊ณ (err.toString());
});
์๋
ํ์ธ์ @FatehiAlqadasi , ๊ฐ์ฌํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ๊ธฐ์ ๋ก๊ทธ๊ฐ ์์ต๋๋ค.
์ค๋ฅ:
C@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
reduce@[๋ค์ดํฐ๋ธ ์ฝ๋]
O@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
์ฆ @ ํ์ผ ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
We@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
๊ฐ์ง ๋ณ๊ฒฝ @ ํ์ผ ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
invokeTask@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
invokeTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
์ค๋ฅ:
C@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
reduce@[๋ค์ดํฐ๋ธ ์ฝ๋]
O@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
์ฆ @ ํ์ผ ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
We@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
๊ฐ์ง ๋ณ๊ฒฝ @ ํ์ผ ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
invokeTask@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
invokeTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
invoke@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
dispatchEvent@[๋ค์ดํฐ๋ธ ์ฝ๋]
handleTapPolyfill@file :///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:6423
pointerEnd@file //var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:5144
[๋ค์ดํฐ๋ธ ์ฝ๋]
handleTouchEnd@file ///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:19:19943
[๋ค์ดํฐ๋ธ ์ฝ๋]
@tonyawad88
๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
logout(){
this.navCtrl.setRoot("LoginPage");
this.navCtrl.push("LoginPage");
}
2๋ ๋ ๋ฒ๊ทธ, ์ฌ์ ํ ์๋ฌด๋ ๊ฐํ ๊ณ ์น ์ ์์ต๋๋ค... Ionic 3์์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฌ๋ฌ๋ถ ์๋ ํ์ธ์,
๋ฃจํธ ํ์ด์ง์์๋ ๋ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ํญ ๋ฐ์ผ๋ก ํ์ด์ง๋ฅผ ํ์ํ ์ ์์ผ๋ฉฐ ํญ์ ์์์ฒ๋ผ ์ด๋ ค ์์ต๋๋ค.
ํด๊ฒฐํ๊ธฐ ์ํด ๋ชจ๋ ๊ฐ๋ฅ์ฑ์ ์๋ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
๋ด ๋ฐ์ดํฐ๊ฐ ์๋ ํญ ํ์ด์ง.
๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ์ดํฐ์ ์ธ๋ถ ์ ๋ณด ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค. ๋ฆฌ๋๋ ์ ๋์์ง๋ง ํญ ํ์ด์ง ๋ด๋ถ์ ์์ต๋๋ค. ์ด์ ๊ฐ์ด...
๋์์ค,
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
[email protected]์์ ์ด ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ด app.module์์ ์ ๊ฑฐํ๋ฉด ๋ฌธ์ ์์ด ํ๋ฃจ ์ข ์ผ nav.setRoot()๋ฅผ ํธ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ DeepLinkConfig์ ์ฐ๊ฒฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ๊ฐ์ค์ setRoot()์ ํ์ ํธ์ถ ํ ๋ฅ ๋งํฌ ๋ก์ง์ด window.location ์ด์ ์ ํ์ ์คํ์ด ๋ณ๊ฒฝ๋๋ ์ํ๊ฐ ๋๋ฉฐ ๋ฅ ๋งํฌ ์ฝ๋๋ window.location์ด ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค๋ ๊ฒ์ ๋๋ค. (๋น์ ์ด setRoot()๋ฅผ ๊ทธ๊ฒ์ผ๋ก๋ถํฐ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๊ธฐ ๋๋ฌธ์) ์คํ, ๊ทธ๋์ ๊ทธ๊ฒ์ ๋น์ ์ด ๋ฉ๋ฆฌ ํ์ํ๋ ค๊ณ ํ๋ ํ์ด์ง๋ก ๋น์ ์ ๋ฐํํฉ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ๊ธฐ์ ์ ์๊ฒ ํจ๊ณผ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
await this.nav.push(page, params);
this.nav.remove(0, this.nav.length() - 1);
@jknisley ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
๋๋ ์ด๊ฒ์ผ๋ก ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
detailEvent(eventItem) {
this.app.getRootNav().push(DetailEventsPage, { itemUp: eventItem });
}
์ด ์ฝ๋๋ ๋๋ฅผ ์ ํ์ด์ง์ ๋ค๋ฅธ ๋ ์ด์์(ํญ ํ์ด์ง ์๋ ์๋)์ผ๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค.
ํ์์ ์ํด ์ฌ๊ธฐ์ ๋จ๊ฒจ ๋์ญ์์ค. ์ด ๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ๋ถ์์ฉ ์์ด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. @uiktiomasfeliz์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
cli ํจํค์ง: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
๊ธ๋ก๋ฒ ํจํค์ง:
cordova (Cordova CLI) : 7.1.0
๋ก์ปฌ ํจํค์ง:
@ionic/app-scripts : 3.1.2
Cordova Platforms : android 6.3.0 ios 4.5.4
Ionic Framework : ionic-angular 3.9.2
์ฒด๊ณ:
ios-deploy : 1.9.2
Node : v8.9.1
npm : 5.7.1
OS : macOS High Sierra
Xcode : Xcode 9.3 Build version 9E145
async logOut() {
await this.authProvider.logout();
await this.app.getRootNav().setRoot('LoginPage');
}
์ด๊ฒ์ด ๋ด๊ฐ ์๋ก์ด ํ์ ์คํ์ ์ค์ ํ๊ณ ์ด์ ํ์ ์คํ์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๊ฒ์ ์ด์จ ๊ฐ 3.9.2 ์ ๋ํด ์ํ๋์์ต๋๋ค.
this.navCtrl.remove(0, this.navCtrl.length() - 1);
this.navCtrl.insert(0, MainPage);
this.navCtrl.pop();
๋ฌธ์ ๋ฅผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฌธ์ ๋ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ๋๊ธ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ฒจ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ์ต์ ๋ฒ์ ์ Ionic์์ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ํ ํ๋ฆฟ์ด ์์ ํ ์ฑ์์ก๋์ง ํ์ธํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ด๋น๊ฒ์ด์ ์ ์ ๋ง ๊ณ ์ฅ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์์ด ์๋ ํ์ด์ง๋ฅผ ํธ์ํด๋ ์๋ํ์ง ์์ต๋๋ค.