Ionic Routing
Routing เป็นส่วนแรกที่เจอเมื่อสร้าง Ionic App จาก Template ซึ่งจะเขียนไว้ใน app.js ใน ionic เลือกใช้ angular-ui-router
เราจะกำกับ url ต่างๆที่วิ่งไปมาใน App ว่าให้ไปเอาเนื้อหา html ไฟล์ไหนมาแสดง แล้ว ให้ใช้ Controller ตัวไหนในการควบคุม
โดยแต่ละ url ต่อไปนี้จะเรียกว่า state
ตัวอย่าง code ใน app.js
การทำ routing คือการ config module ในกรณีนี้ ถ้า App เราชื่อ ionicApp ก็ทำการสร้าง หรือ เรียก module จาก cache ด้วย
จากนั้น ก็ config โดย inject resource เข้าไป สองอย่างคือ $stateProvider และ $urlRouterProvider
โดยที่ เมื่อ click ที่ tab home, ionic จะเอา home.html มาแสดงตามที่กำหนดใน router
ณ จุดนี้ อาจจะดูยุ่งยาก ทั้งๆที่การทำ link ธรรมดาก็น่าจะเพียงพอ
แต่ เมื่อ App ซับซ้อนขึ้น มีการใช้ Controller ซ้ำๆในหน้า html ต่างๆ วิธีนี้ จะทำให้เห็นศูนย์รวมของการตั้งค่าได้่ดีกว่า การกำหนด Controller แยกในแต่ละ html ไฟล์
ไว้ผมจะมาขยายความต่อครับ
เราจะกำกับ url ต่างๆที่วิ่งไปมาใน App ว่าให้ไปเอาเนื้อหา html ไฟล์ไหนมาแสดง แล้ว ให้ใช้ Controller ตัวไหนในการควบคุม
โดยแต่ละ url ต่อไปนี้จะเรียกว่า state
ตัวอย่าง code ใน app.js
var app = angular.module('ionicApp', ['ionic']) app.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/') $stateProvider.state('home', { url: '/', template: '<p>Hello, world!</p>' }) })
การทำ routing คือการ config module ในกรณีนี้ ถ้า App เราชื่อ ionicApp ก็ทำการสร้าง หรือ เรียก module จาก cache ด้วย
var app = angular.module('ionicApp', ['ionic'])
จากนั้น ก็ config โดย inject resource เข้าไป สองอย่างคือ $stateProvider และ $urlRouterProvider
$urlRouterProvider.otherwise('/')กำหนดว่า ถ้า url path ไม่ตรงกับที่กำหนดไว้เลย ให้ไปที่ หน้า root /
$stateProvider.state('home', { url: '/', template: '<p>Hello, world!</p>' })กำหนด state ใหม่ชื่อ home โดยบอกว่า ถ้า url path คือ / ให้ใช้ template เป็น html code ตามที่กำหนดได้เลย แต่เราสามารถกำหนดให้ใช้ไฟล์ home.html เลยก็ได้ ด้วย
$stateProvider.state('home', { url: '/', templateUrl: 'home.html' })ส่วนเนื้อหา index.html หน้าแรกของ ionic ก็จะเป็น
<body> <ion-tabs class="tabs-positive"> <ion-tab icon="ion-home" ui-sref="home"> <ion-nav-view name="home"></ion-nav-view> </ion-tab> <ion-tab icon="ion-help" ui-sref="help"> <ion-nav-view name="help"></ion-nav-view> </ion-tab> </ion-tabs> </body>
โดยที่ เมื่อ click ที่ tab home, ionic จะเอา home.html มาแสดงตามที่กำหนดใน router
ณ จุดนี้ อาจจะดูยุ่งยาก ทั้งๆที่การทำ link ธรรมดาก็น่าจะเพียงพอ
แต่ เมื่อ App ซับซ้อนขึ้น มีการใช้ Controller ซ้ำๆในหน้า html ต่างๆ วิธีนี้ จะทำให้เห็นศูนย์รวมของการตั้งค่าได้่ดีกว่า การกำหนด Controller แยกในแต่ละ html ไฟล์
ไว้ผมจะมาขยายความต่อครับ
Comments