Ionic ๋ฒ์ : ("x"๋ก ํ๋ ์ ํ)
[ ] 1.x (Ionic 1.x ๋ฌธ์ ์ ๊ฒฝ์ฐ https://github.com/ionic-team/ionic-v1์ ์ฌ์ฉํ์ธ์.)
[ ] 2.x
[x] 3.x
์ ์ถ ์ค์
๋๋ค
[x ] ๋ฒ๊ทธ ๋ณด๊ณ ์
[ ] ๊ธฐ๋ฅ ์์ฒญ
[ ] ์ง์ ์์ฒญ => ์ฌ๊ธฐ์ ์ง์ ์์ฒญ์ ์ ์ถํ์ง ๋ง๊ณ ๋ค์ ์ฑ๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค. https://forum.ionicframework.com/ ๋๋ http://ionicworldwide.herokuapp.com/
ํ์ฌ ํ๋:
Ionic 3.5.0 ์ด์ํ URL ๋์
๋ด ์ฑ์๋ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค! LoginPage, SignupPage... ๋ก๊ทธ์ธ ๋๋ ๊ฐ์
ํ ํญ ์ธํฐํ์ด์ค๋ก ์ด๋ํฉ๋๋ค. ์๊ฐ๋ณด๋ค ๋ฉ์ง ๊ฒ์ ์์ต๋๋ค!
์ฐ์ "nav/n4"๊ฐ ๊ธฐ๋ณธ ๋์์
๋๊น?
http://localhost :8100/#/nav/n4/login
http://localhost :8100/#/nav/n4/app/tabs/t0/perfil/perfil
๋๋ ionic g๋ก ํ์ด์ง์ ํญ์ ๋ง๋ค์์ต๋๋ค.
๋ชจ๋ ํ์ด์ง์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ์ค์ ํ์ต๋๋ค.
@IonicPage({ ์ธ๊ทธ๋จผํธ:'perfil' })
์์๋๋ ๋์:
http://localhost :8100/#/๋ก๊ทธ์ธ
http://localhost :8100/#/app/perfil
์ฌํ ๋จ๊ณ:
๊ด๋ จ ์ฝ๋:
login.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import {SharedModule} from '../../shared/shared.module';
import { LoginPage } from './login';
@NgModule({
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
SharedModule
],
exports: [
LoginPage
]
})
export class LoginPageModule {}
login.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, MenuController, LoadingController, AlertController, Events } from 'ionic-angular';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ControlValidator } from '../../validators/control-validator';
import { Config } from '../../config/config';
import { Storage } from '@ionic/storage';
import {UserProvider} from '../../providers/user/user.provider';
import {SocialProvider} from '../../providers/social/social.provider';
@IonicPage({
segment:'login'
})
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
user:any = {};
form:FormGroup;
submitted:boolean = false;
private loader:any;
private alert:any;
constructor(
public navCtrl: NavController,
public menuCtrl:MenuController,
public loaderCtrl:LoadingController,
public alertCtrl:AlertController,
public events:Events,
public formBuilder:FormBuilder,
public storage:Storage,
public userService:UserProvider,
public socialService:SocialProvider,
public config:Config) {
this.user = {
email:'',
password:''
}
this.form = formBuilder.group({
email:[this.user.email, Validators.compose([ControlValidator.isEmailValid])],
password:[this.user.password, Validators.compose([Validators.required, Validators.minLength(5)])]
});
}
ionViewDidLoad() {
this.menuCtrl.enable(false);
}
showLoading(){
this.loader = this.loaderCtrl.create({
content: 'Verificando as suas credenciais...'
});
this.loader.present();
}
showAlert(subtitle:string){
this.alert = this.alertCtrl.create({
title: 'LOGIN',
subTitle:subtitle,
buttons:['OK'],
cssClass:'alert-login'
});
this.alert.present();
}
openPage(page:string){
this.navCtrl.push(page);
}
private onError(err:string){
this.showAlert(err);
}
login(){
this.submitted = true;
if(!this.form.valid){
return;
}
this.showLoading();
this.user = this.form.value;
this.userService.login(this.user)
.then(res=>{
if(res) {
this.loader.dismiss()
.then(()=>{
setTimeout(()=>{
this.navCtrl.setRoot('TabsPage');
});
});
}else{
}
})
.catch(this.onError);
}
}
tabs.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { TabsPage } from './tabs';
@NgModule({
declarations: [
TabsPage
],
imports: [
IonicPageModule.forChild(TabsPage),
]
})
export class TabsPageModule {}
tabs.ts
import { Component } from '@angular/core';
import { IonicPage, NavController } from 'ionic-angular';
@Component({
selector: 'page-tabs',
templateUrl: 'tabs.html'
})
@IonicPage({
segment:'app'
})
export class TabsPage {
perfilRoot = 'PerfilPage';
agendaRoot = 'AgendaPage';
newsRoot = 'NewsPage';
ticketsRoot = 'TicketsPage';
myFestivalRoot = 'MyFestivalPage';
constructor(public navCtrl: NavController) {}
}
perfil.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { PerfilPage } from './perfil';
@NgModule({
declarations: [
PerfilPage,
],
imports: [
IonicPageModule.forChild(PerfilPage),
],
exports: [
PerfilPage
]
})
export class PerfilPageModule {}
perfil.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
@IonicPage({
segment:'perfil'
})
@Component({
selector: 'page-perfil',
templateUrl: 'perfil.html',
})
export class PerfilPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad PerfilPage');
}
}
๊ธฐํ ์ ๋ณด:
Ionic ์ ๋ณด: (ํฐ๋ฏธ๋/cmd ํ๋กฌํํธ์์ ionic info
๋ฅผ ์คํํ๊ณ ์ถ๋ ฅ์ ์๋์ ๋ถ์ฌ๋ฃ๊ธฐ):
global packages:
@ionic/cli-utils : 1.4.0
Ionic CLI : 3.4.0
local packages:
@ionic/app-scripts : 1.3.12
@ionic/cli-plugin-ionic-angular : 1.3.2
Ionic Framework : ionic-angular 3.5.0
System:
Node : v6.5.0
OS : OS X El Capitan
Xcode : Xcode 8.1 Build version 8B62
ios-deploy : 1.9.1
ios-sim : 5.0.13
npm : 3.10.3
ํ์ ์ด๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ธํด๋ณด๋ ๋ค๋ฅธ ๊ฒ๋ค๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๊ณง ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@AmitMY ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!!
๋ต ์ ๋ ๋ฐ๋๋๋ค!! ๋ฅ๋งํน์ด ์ด ๋์์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๊น?
์๊ณ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ฉฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ค๋๋ถํฐ ์์ ์ ์์ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋จ
@danbucholtz ๊ฐ์ฌํฉ๋๋ค
๊ฑด๋ฐฐ
@tattivitorino ๊ฐ์ฌํฉ๋๋ค. ์ด๋ฏธ ์ง๋ฌธ https://forum.ionicframework.com/t/url-not-reset-on-ionic-serve-live-reload/98080 ์ ๋์ผํ ๋ด์ฉ์ ๊ฒ์ํ์ต๋๋ค.
์ด์ ๋ํ ํ๋ก์ธ์ค๊ฐ ์์ต๋๊น?
์ต์ ์ ๊ทธ๋ ์ด๋๋ก ์์ ์ด ๋์๊ณ ,
@rashnk
"npm install [email protected] --save --save-exact"๋ฅผ ์
๊ทธ๋ ์ด๋ํ์ต๋๋ค.
์ฌ์ ํ " http://localhost :8100/#/nav/n4/start"์
๋๋ค.
http://blog.ionic.io/announceing-ionic-3-5-2/๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
/nav/n4/์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
rashnk - 3.5.2์์ ํ์คํ ์์ ๋์๋ค๋ ๋ง์์ด์ ๊ฐ์?
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ( http://blog.ionic.io/announcing-ionic-3-5-2/) ์์ ์ง์ ์ธ๊ธ๋์ง ์์์ต๋๋ค.
๋ฏธ๋์ ์ด๋ฐ ์ข ๋ฅ์ ๊ฒ์ ํ์ธํ ์ ์๋ ์์ ์ฌํญ์ ๋ณ๊ฒฝ ๋ก๊ทธ๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์ :)
@dev-manager-uk ์. ์ฐธ์กฐ :
์ข์ ๊ณ ๋ง์.
์ค์ ์ด๋ ์ฝ๋์์ ๋ณ๊ฒฝํด์ผ ํ ์ฌํญ์ด ์์ต๋๊น? ์๋๋ฉด Just Workโข์ฌ์ผ ํฉ๋๋ค.
:NS
์ด ๋ฌธ์ ๋ ์ฌ์ ํ 3.5.2์ 3.5.3 ๋ชจ๋์ ์กด์ฌํฉ๋๋ค.
์ด์จ ์ ๋ณด
๊ธ๋ก๋ฒ ํจํค์ง:
@ionic/cli-utils : 1.5.0
Ionic CLI : 3.5.0
๋ก์ปฌ ํจํค์ง:
@ionic/app-scripts : 2.0.2
@ionic/cli-plugin-ionic-angular : 1.3.2
Ionic Framework : ionic-angular 3.5.3
์ฒด๊ณ:
Node : v8.0.0
OS : macOS Sierra
Xcode : Xcode 8.3.3 Build version 8E3004b
ios-deploy : 1.9.0
ios-sim : 5.0.9
npm : 5.3.0
@rashnk , ์ ๊ทธ๋ ์ด๋์ ์ฑ๊ณตํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ์ฌ์ ํ ๋จ์ ์์ผ๋ฉฐ ๋ง์ง๋ง ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ง์ฐ ๋ก๋ ํ์ด์ง์ ๋ํ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
์. ๋ด๊ฐ ํ๋ ธ์ด. URL์๋ ์ฌ์ ํ ์ถ๊ฐ ๋ด์ฉ์ด ์์ง๋ง ionic serve -l์ ์ฌ์ฉํ์ฌ ํฌ๋กฌ์์ ์์
ํ๊ณ ์์์ต๋๋ค.
๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ผ๋ ์คํฌ๋ฆฐ์ท์ ํ์ธํ์ธ์.
์, ๋ฌธ์ ๋ ์์ํ์ง ๋ชปํ URL์ ๋๋ค.
์์๋๋ ๋์:
http://localhost :8100/#/๋ก๊ทธ์ธ
http://localhost :8100/#/app/perfil
@danbucholtz ์ฐ๋ฆฌ๋ ๋น์ ์ ํ์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฏ๋ก ๋๋ ์ต์ Ionic 3.5.3
์ ์์ ๋์ผํ URL ํจํด์ ๊ฐ์ง๊ณ ์์ต๋๋ค
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. 3.5๋ก ์
๊ทธ๋ ์ด๋ํ ํ ๋ฅ๋งํน(์๋ฒ์์ ํธ์คํ
๋๋ ๋ธ๋ผ์ฐ์ ์ฑ)์ ์ฌ์ฉํ๋ ์ฑ์ด 'nav/n4'์ ๊ฐ์ ๋ง๋ฒ์ URL๋ก ์ธํด ๋ ์ด์ ์์๋๋ก ์๋ํ์ง ์์์ต๋๋ค.
ionic3.5๊ฐ ํ์ ํจํด์ ๋ณ๊ฒฝํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๊ณง ์์ธํ ๋ฌธ์๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด์จ๋ ionic-team์ ๋
ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ PWA ์ฑ์ ๊ฐ๋ฐ ์ค์ด๋ฉฐ ๋ฅ๋งํน์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ์ํด ๋ฆด๋ฆฌ์ค๋ฅผ ๋ณด๋ฅํ๊ณ ์์ต๋๋ค.
@larpo1 ๊ฐ๋ฅ ํ๋ฉด ๋ค์ด๊ทธ๋ ์ด๋ ํ์๊ธธ ๊ถํฉ๋๋ค. 3.5.X์์๋ nav ์ธ์๋ ํฐ ๋ณํ๊ฐ ์์์ต๋๋ค.
๋ชจ๋๋ค ์๋ ! Dan์ ํ์ฌ ์ฐ๋ฆฌ์ URL์ ์ค์ด๊ณ ๊ทธ ์์ ์๋ ๋ง์ "๋ง๋ฒ"์ ์์ ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ณง ์ค๋น๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ณ ๋ง์ ๋! ๊ฐ์ฌํฉ๋๋ค ์ ์คํด!
๊ธฐ๋ณธ์ ์ผ๋ก ์น URL์ฒ๋ผ ์๋ํด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์๋ํด์ผ ํฉ๋๋ค.
https://www.test.com/about
๋์ ์:
https://www.test.com/#/nav/n4/about
๋๋:
https://www.test.com/#/about
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
@dev-manager-uk https://www.test.com/#/about์ ๊ดํด์๋ ๋ค๋ฅธ ์ฃผ์ ์ ๋๋ค.
์ฑ ๋ชจ๋์์ locationStrategy
๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ ๊ฑฐํฉ๋๋ค.
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
@sergiocarneiro ๊ฐ์ฌํฉ๋๋ค
์๋ํด ๋ณผ๊ฒ์!
์๋
ํ์ธ์ @jgw96
๋ฅ๋งํน์ ์์ ํ๊ธฐ ์ํ ๋ฆด๋ฆฌ์ค์ ๋ํ ๋๋ต์ ์ธ ์์ ์๊ฐ์ด ์์ต๋๊น?
๊ฐ์ฌ ํด์ :-)
์ด ๋ฌธ์ ๋ฅผ ์์ฅํ๊ธฐ ์ํด ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ํด์ผ ํ์ต๋๋ค.
"npm install [email protected] --save --save-exact"
์ด๊ฒ์ ๋ด์ผ ์ถํ๋ ๊ฒ์ ๋๋ค. ์ปค๋ฐ์ ์ด๋ฏธ Github์ ์์ผ๋ฏ๋ก ๋ซ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋จ
์, ์์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ์๋์ง ํ์คํ์ง ์์ง๋ง ์ฌ๋ฌ๋ถ์ ์ด ์์ ์ฌํญ์ด ์๋ nightly, 3.5.3-201707251952
์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ 3.6 ๋ฆด๋ฆฌ์ค ์ ์ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ์ญ์์ค.
$ npm install [email protected] --save --save-exact
๊ฐ ์ ์๊ฒ ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
ํธ์ง: 3.6.0 ์ฌ์ฉ
์ฃ์กํฉ๋๋ค. ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ด์ผ ๋ฐฐ์ก๋ฉ๋๋ค. ์ฌ์ ์ฒดํํ์ ์ํ์๋ฉด npm install ionic-angular@nightly
. ํญ์ ์ฌ์ฉ ์ค์ด๊ณ ์๋ก ๊ณ ์นจ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ด๋ ์ฝ๊ฐ์ API ๋ณ๊ฒฝ์ผ๋ก Ionic 4์์ ์์ ๋ ์์คํ
์ ์๋ ค์ง ์ ํ ์ฌํญ์
๋๋ค. ๊ทธ ๋์ tabUrlPath
์ ion-tab
๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก segment
๋ฅ๋งํฌ์ tab
๊ฐ ๊ฐ์ name/title
์ธ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์ ์ฌ์ ์ผ๋ก ๊ณต๋ชจ๊ฐ ์์ ์ ์์ต๋๋ค. ๊ทธ ์ธ์๋ ๋ชจ๋ ๊ฒ์ด ์ง๊ธ๊น์ง ํ๋ฅญํ๊ฒ ์๋ํ๊ณ ์์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋จ
@sergiocarneiro ๋ถํํ๋ ํด๋น ์ค์ ์ ์ถ๊ฐํด๋ nav/n4
์ ๊ฑฐ๋์ง ์์ผ๋ฉฐ ํด๋น URL์ ์ง์ ์ก์ธ์คํ ์๋ ์์ต๋๋ค.
$ npm install [email protected] --save --save-exact๊ฐ ์ ์๊ฒ ๋ง๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
@numerized ๋์ 3.6.0์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋
ํ์ธ์,
์ ๋ ionic cli v3.9.2๋ฅผ ์ฌ์ฉ ์ค์ด๊ณ ์ฌ์ ํ URL ํ์์ค์ nav/n4๊ฐ ์์ต๋๋ค.
์ฌ์ค ๋๋ ๊ฐ์ง๊ณ ์๋ค
/#/nav/n4/pu/loginpage/nav/n5/pr/privatepage
๋๋ ๊ณต๊ณต ๋ฐ ๊ฐ์ธ ํ์์ด ์๊ธฐ ๋๋ฌธ์ ...
๋๋ 3.6.0์ด ์ง๋ฌ์ผ๋ฏ๋ก ์์ฒญ๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
3.6.0 ์ด์จ ๊ฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
AmitMY์๊ฒ ๊ฐ์ฌํฉ๋๋ค. ๋ถํํ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค...
๋ด๊ฐ ๋ญ ๋ ํ ์ ์๋?
์ฌ๊ธฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ ๋ ์ค์ด๊ณ ํญ์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค!!!
ionic ๋ฐ ionic-angular๋ฅผ ์ต์ ์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ ์ธ์ @danbucholtz ๊ฐ ์ํํด์ผ ํ ๋ค๋ฅธ ์์
์ด ์์ต๋๊น?
๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ์ต์ ์ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค
๋ฐ๋ผ์ ionc-angular 3.6.1์ ์คํํ๊ณ ๋ค์์ ์ํํ๋ฉด
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! ์ด ๋ฌธ์ ๋ฅผ ๋ง๋ ์ดํ๋ก ๋ง์ ์ผ์ด ์ผ์ด๋๊ณ ๋ณ๊ฒฝ๋ ๊ฒ ๊ฐ์ต๋๋ค! ์ด์ ์ ๊ฒช์๋ url ๋ฌธ์ ์ ์ผ๋ถ๊ฐ ์์ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค! ํญ ์์คํ ๋ด๋ถ์ ์์ง ์์ ํ์ด์ง์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค! ๊ทธ๋ฌ๋ ํญ์ ๊ฒฝ์ฐ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
๋ฐฉ๊ธ ๋ก๊ทธ์ธ, ๊ฐ์
๋ฑ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ ํ์ด์ง๋ก ์๋ก์ด ์ฑ์ ๋ง๋ค์์ต๋๋ค. url์ ์ด๋ฌํ ํ์ด์ง์ ์ ํฉํฉ๋๋ค!
http://localhost :8100/#/๋ก๊ทธ์ธ
http://localhost :8100/#/๊ฐ์
๋ด๊ฐ ๊ฐ์ง ํญ ํ์ด์ง(๋ก๊ทธ์ธ ์)์ ๋๋ฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://localhost :8100/#/tabs/tab1/tab1
์ฌ๊ธฐ IonicPage์ ์ธ๊ทธ๋จผํธ๋ ion-tab์ tabUrlPath๋ฅผ ์ค์ ํ์ง ์์์ต๋๋ค.
http://localhost :8100/#/tabs/tab-1/tab1
์ฌ๊ธฐ์์ ์ด์จ ํญ์ tabUrlPath๋ฅผ ์ค์ ํฉ๋๋ค(
http://localhost :8100/#/tabs/tab-1/tab-1
์ฌ๊ธฐ์์ ๋ ๋ค ์ค์ ํฉ๋๋ค
@IonicPage({
์ธ๊ทธ๋จผํธ: 'ํญ-1'
})
tabUrlPath๊ฐ ์ฒซ ๋ฒ์งธ /tab-1 ์ธ๊ทธ๋จผํธ์ ๊ด๋ จ๋์ด ์๊ณ IonicPage ์ธ๊ทธ๋จผํธ๊ฐ ๋ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค!
๋ ์ค ํ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ๋๋ ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ชจ๋ ๊ฐ๋ ์์ ์ ๋ณด์ง ๋ชปํฉ๋๋ค! ์ด์์ ์ธ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. http://localhost :8100/#/tabs/tab-1, ๋ง์ต๋๊น?
๋ด ์์คํ ์ ๋ณด์ ๋๋ค.
`
cli ํจํค์ง: (/ionicv2/appv3/app/node_modules)
@ionic/cli-utils : 1.12.0
ionic (Ionic CLI) : 3.12.0
๊ธ๋ก๋ฒ ํจํค์ง:
cordova (Cordova CLI) : 7.0.1
๋ก์ปฌ ํจํค์ง:
@ionic/app-scripts : 2.1.4
Cordova Platforms : none
Ionic Framework : ionic-angular 3.6.1
์ฒด๊ณ:
Android SDK Tools : 25.2.5
ios-deploy : 1.9.1
ios-sim : 5.0.13
Node : v6.5.0
npm : 3.10.3
OS : OS X El Capitan
Xcode : Xcode 8.1 Build version 8B62
`
Ionic 3.9.2์์๋ ํ์คํ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์ฒ๋ผ ํญ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
http://localhost:8100/create/nav/n9/create
์ ๊ฐ์ URL์ด ํ์๋ฉ๋๋ค.
URL์ ํญ ์ด๋ฆ๊ณผ ํ์ด์ง ์ด๋ฆ์ด ํ์ํ์ง ์๋ค๋ @tattivitorino์ ์๊ฒฌ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ํญ ์ด๋ฆ์ ํ์ด์ง ์ด๋ฆ์ผ๋ก ์์ ํ ๋์ฒด๋์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์์์ฐจ๋ฆฐ ๋ ๋ค๋ฅธ ์ ์ ํญ์ ์ฌ์ฉํ ๋ ์๋ํ๋ ๋งค๊ฐ๋ณ์๊ฐ ์๋ URL์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์ด๊ฒ์ ์๋ํ์ง ์์ต๋๋ค:
http://127.0.0.1 :8100/#/tabs/docs/documents/063b38ae-8edd-408b-b7fc-a346b1c16a8b
์ด๊ฒ์ด ์ํํ๋ ๋์:
http://127.0.0.1 :8100/#/documents/063b38ae-8edd-408b-b7fc-a346b1c16a8b
๋ด๊ฐ ์ป์ผ๋ ค๋ ํ์ด์ง์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ๊ทธ๋จผํธ ์ ์๊ฐ ์์ต๋๋ค.
segment: "documents/:documentId"
3.9.2๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์๊ฒฌ ์ดํ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ์ผ๋ฉฐ /nav/n4/ ํ์๋ฉ๋๋ค. ์ด ์ ๊ฑฐ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์๋๋ฉด 3.6.0์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๊น?
ํธ์ง : ์ด๊ฒ์ ๋ฌด์ํ์ญ์์ค. npm์ ๋ด package-lock.json์ ๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. npm install --no-shrinkwrap
๋ก ๋ด package.json์์ ๊ฐ์ ๋ก ์ค์นํ๋ ๊ฒ์ด ํธ๋ฆญ์ ์ํํ๊ณ 3.9.2๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์นํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
3.9.2๋ฅผ ์คํ ์ค์ ๋๋ค. ๋ฌธ์ ๊ฐ ์ง์๋ฉ๋๋ค.
3.9.2์์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์: /nav/n5/MasterLogin
๋๋ ์ด๊ฒ์ ์ ์์ผ๋ก ์๋์ํจ ๋ค์ 3.9.2๋ ์ฌ์ฉํ์ฌ /nav/ ๊ฒฝ๋ก๋ฅผ ๋ง๋ค๊ธฐ ์์ํ์ต๋๋ค!
๋๋ ๋ฌธ์ ๊ฐ ๋ฉ์ธ ํ์ด์ง์ ๋ ์ด์์ ์ค์์น ion-nav
๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค.
@mariohmol ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ํฌํจํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฌธ์ ๋ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ๋๊ธ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ฒจ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ์ต์ ๋ฒ์ ์ Ionic์์ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ํ ํ๋ฆฟ์ด ์์ ํ ์ฑ์์ก๋์ง ํ์ธํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค๋๋ถํฐ ์์ ์ ์์ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋จ