Ionic-framework: Ionic 3.5.0 ์ด์ƒํ•œ URL ๋™์ž‘ "nav/n4" ๋ฐ "tabs/t0/page"

์— ๋งŒ๋“  2017๋…„ 07์›” 13์ผ  ยท  53์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ionic-team/ionic-framework

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 

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ค๋Š˜๋ถ€ํ„ฐ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”,
๋‹จ

๋ชจ๋“  53 ๋Œ“๊ธ€

ํŒ€์€ ์ด๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค๋ฅธ ๊ฒƒ๋“ค๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•˜์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋„ ๊ณง ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@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์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋กฌ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์Šคํฌ๋ฆฐ์ƒท์„ ํ™•์ธํ•˜์„ธ์š”.
g1
g2

์˜ˆ, ๋ฌธ์ œ๋Š” ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ 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์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

๋‚ด๊ฐ€ ๋ญ˜ ๋” ํ•  ์ˆ˜ ์žˆ๋‹ˆ?

screen shot 2017-09-12 at 4 32 50 pm

์—ฌ๊ธฐ์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ค‘์ด๊ณ  ํ•ญ์ƒ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!!!

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์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…œํ”Œ๋ฆฟ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์กŒ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰