พอดีพี่ป๋าที่เคยมาเรียนกับโค้ชพล ถามว่า
เป็นไปได้ไหมที่เราจะสั่งเปลี่ยนหน้า Ionic แอพพลิเคชั่น โดยสั่งจากฝั่งของ Angular JS นั่นคือไม่ผ่าน href ของลิ้งค์ตามปกติ
– พี่ป๋า
เป็นไปได้ครับ เราสามารถทำได้โดยใช้ $state เข้ามาช่วย 😉
การ Redirect เว็บทั่วไปโดยใช้ Javascript
ซึ่งวิธีที่เราจะทำ จะได้ผลคล้ายๆ กับการใช้ javascript ในการ redirect ไปยังเว็บเพจที่ต้องการตาม URL Address นั่นเองครับ
ซึ่งตัวอย่างการ redirect แบบ Javascript ที่เราคุ้นเคย จะเหมือน code ด้านล่าง
<script> window.location = 'http://www.nextflow.in.th'; </script>
การเปลี่ยนหน้าแอพใน Ionic framework โดยใช้ $state
ในที่นี้ เราต้องทำการตั้งชื่อให้ state ของเราใน module ก่อนเหมือนตอนที่เรียนไป
.config(...{ $stateProvider.state('checkout', { templateUrl: 'views/checkout.html' }); });
จากนั้นเราถึงสามารถเรียกใช้ $state.go() ใน controller ที่เราต้องการ ไม่ว่าจะเป็นใน Angular method หรือที่อื่นๆ ใน controller ที่มีการเรียก $state เข้ามาใช้งาน
nextflowModule.controller('HomeController', ['$scope','$state', function($scope,$state){ $scope.goCheckOut = function(){ $state.go('checkout'); } }])
การส่งค่าผ่านไปยังอีก state ผ่าน $state.go()
ทีนี้ถ้าเราต้องการส่งค่าตัวแปร ผ่านไปกับการใช้งาน $state.go() ด้วย ก็สามารถส่งเป็น Javascript object ได้ครับ
$scope.goCheckOut = function(){ $state.go('checkout',{ checkoutID: 'nextflow109' }); }
โดยใน .config() ก็อย่าลืมกำหนด state parameter ด้วยล่ะ
.config(...{ $stateProvider.state('checkout', { templateUrl: 'views/checkout.html', params: [ 'checkoutID' ] }); });
เราถึงจะดึงค่าออกมาด้วย $stateParams ตามปกติ
nextflowModule.controller('CheckoutController', ['$scope','$stateParams', function($scope,$stateParams){ $scope.id = $stateParams.checkoutID; }])
หวังว่าจะช่วยคนอื่นๆ ให้สร้างแอพ iOS และ Android ด้วย Ionic Framework ตรงตามต้องการมากขึ้นนะครับ
โค้ชพลไปปั่นงานต่อล่ะ
เอ้อ เดี๋ยวกันยา 58 นี้มีหลักสูตรใหม่ด้วยนะ น่าจะถูกใจหลายๆ คนแน่นอน
อ้างอิง – Ionic framework