AngularjsDeveloperIonic framework

การใช้งาน ionic Framework ร่วมกับ AngularJS แสดง Card View

บทเรียนการเขียนโปรแกรมด้วย AngularJS ร่วมกับ ionic framework เบื้องต้นสำหรับการนำ CardView มาแสดงผลบนแอพพลิเคชันของเราให้เหมือน Facebook ทำงานร่วมกับ Json

บทเรียนก่อนหน้านี้: https://www.daydev.com/category/developer/angularjs

เป็นการทบทวนคำสั่งภาษา AngularJS และ ionic framework เบื้องต้นในการดึง Web Service ครับ โดยเราจะใช้ component ของตัว Card มาประยุคกับรูปแบบของ SideMenu Apps

<div class="list card">

  <div class="item item-avatar">
    <img src="mcfly.jpg">
    <h2>Marty McFly</h2>
    <p>November 05, 1955</p>
  </div>

  <div class="item item-body">
    <img class="full-image" src="delorean.jpg">
    <p>
      This is a "Facebook" styled Card. The header is created from a Thumbnail List item,
      the content is from a card-body consisting of an image and paragraph text. The footer
      consists of tabs, icons aligned left, within the card-footer.
    </p>
    <p>
      <a href="#" class="subdued">1 Like</a>
      <a href="#" class="subdued">5 Comments</a>
    </p>
  </div>

  <div class="item tabs tabs-secondary tabs-icon-left">
    <a class="tab-item" href="#">
      <i class="icon ion-thumbsup"></i>
      Like
    </a>
    <a class="tab-item" href="#">
      <i class="icon ion-chatbox"></i>
      Comment
    </a>
    <a class="tab-item" href="#">
      <i class="icon ion-share"></i>
      Share
    </a>
  </div>

</div>

ionic-card-1

ให้เราทำการสร้าง Project ขึ้นมาใหม่ครับ เปิด command dos ขึ้นมา

ionic-card-2

ionic-card-3

ให้ทำการ รันคำสั่งต่อไปนี้

cd xampp/htcs/ionic

ionic start {ชื่อแอพ} sidemenu

ionic-card-4

เมื่อสร้างเสร็จแล้ว รันคำสั่ง

ionic serve

เราจะได้รูปแบบตามนี้ครับ ให้เราเปิด Folder ตัว Project ของเราขึ้นมาครับ ไปที่ไฟล์ www/js/app.js แก้ไขบรรทัดสุดท้ายของแอพเราเป็นแบบนี้

  // if none of the above states are matched, use this as the fallback
  //$urlRouterProvider.otherwise('/app/playlists');
  $urlRouterProvider.otherwise('/app/cardview');

ให้ Routers ของแอพฯ เวลารันแอพของเราชี้ default ไปที่ app/cardview ต่อมาให้เราเพิ่ม state เข้าไปเพิ่มเติมครับ ตำแหน่งไหนก็ได้ขอให้อยู่ในคำสั่ง

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

โดยเพิ่มว่า

.state('app.cardview', {
      url: '/cardview',
      views: {
        'menuContent': {
          templateUrl: 'templates/cardview.html',
          controller: 'CardViewCtrl'
        }
      }
    })

ให้เราสร้าง Router ไปที่ cardview โดยไปเรียกไฟล์ cardview.html ที่อยู่ใน Folder ชื่อ template สร้าง controller ขึ้นมาว่า CardViewCtrl

ไปที่ไฟล์ controller.js ในโฟลเดอร์ js ครับ เพิ่มคำสั่งนี้ลงไป ในกลุ่มของ controller ตรงไหนก็ได้

.controller('CardViewCtrl', function($scope) {})

สุดท้ายก็ไปสร้าง template ขึ้นมาครับ ตั้งชื่อว่า cardview.html ใส่ code เหมือนตัวอย่าง playlists.html ไปก่อนก็ได้

<ion-view view-title="Movie Review">
  <ion-content>
    
  </ion-content>
</ion-view>

ลอง Preview ดูครับ

ionic-card-5

ไปเพิ่ม array ตัวแปร json ในไฟล์ controller.js ใน โฟลเดอร์ js ครับ แก้ในส่วนของ CardviewCtrl ดังนี้

.controller('CardViewCtrl', function($scope) {
	$scope.movies = [
		{ id:1, title: "I Saw the Devil (2010) เวรย่อมระงับด้วยการจองเวร", thumbnail: "http://www.lovedesigner.net/wp-content/uploads/2015/08/I-Saw-The-Devil-Poster002.jpg"},
		{ id:2, title: "โปสเตอร์หนังจากเอเชียที่ได้รับแรงบันดาลใจจากตะวันตก?", thumbnail: "http://www.lovedesigner.net/wp-content/uploads/2015/08/SytzHSI-505x350.jpg"},
		{ id:3, title: "Happy Together (1997) รักไม่ยอมเปลี่ยนแปลง", thumbnail: "http://www.lovedesigner.net/wp-content/uploads/2015/08/Screen-Shot-2558-08-16-at-9.38.26-PM.png"},
		{ id:4, title: "The Drop (2014) จงอย่าได้ปลุกด้านมืดของคุณ", thumbnail: "http://www.lovedesigner.net/wp-content/uploads/2015/06/The-Drop-2yf4223vsk8y3c4e8zykn4-620x350.jpg"}
	  ];
})

ผมใส่ Key Value ตัวอย่างไป 4 ชุดประกอบไปด้วย id, title และ thumbnail เก็บใน Scope ที่ชื่อว่า movies ดังนั้นเราต้องกลับมาที่ไฟล์ templates/cardview.html เพื่อแก้ไข code การวน loop ตามนี้

<ion-view view-title="Movie Review">
  <ion-content>
    <ion-list>
      <ion-item ng-repeat="item in movies" href="#/app/cardview/{{item.id}}">
        {{item.title}}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>

ใช้ ng-repeat ไปสน scope ชื่อ movies เก็บค่าทีละชุดมาไว้ใน item แล้ว แสดงผล title ออกมาผ่าน {{item.title}}

ionic-card-6

เอาล่ะต่อไปเรามาประยุคใช้ Cards บน ionic กันดีกว่าแก้ไข template/carview.html ตามนี้ครับ

<ion-view view-title="Movie Review">
  <ion-content>
    <ion-list>
        <div class="list card" ng-repeat="item in movies" href="#/app/cardview/{{item.id}}">
		  <div class="item item-avatar">
			<img src="http://www.thedarkdev.com/wp-content/uploads/2014/08/294679_10150271518927478_4232179_n.jpg">
			<h2>Banyapon Poolsawas</h2>
			<p>November 20, 2015</p>
		  </div>

		  <div class="item item-body">
			<img class="full-image" src="{{item.thumbnail}}">
			<p>
			  {{item.title}}
			</p>
			<p>
			  <a href="#" class="subdued">1 Like</a>
			  <a href="#" class="subdued">5 Comments</a>
			</p>
		  </div>
		  <div class="item tabs tabs-secondary tabs-icon-left">
			<a class="tab-item" href="#">
			  <i class="icon ion-thumbsup"></i>
			  Like
			</a>
			<a class="tab-item" href="#">
			  <i class="icon ion-chatbox"></i>
			  Comment
			</a>
			<a class="tab-item" href="#">
			  <i class="icon ion-share"></i>
			  Share
			</a>
		  </div>
		</div>
    </ion-list>
  </ion-content>
</ion-view>

ส่วนของรูป Profile ของผมผมไปหารูปส่วนตัวจากบน Google มาใส่เป็น URL ไป ทีนี้เรามาแสดงผลแอพเราดูกันหน่อยครับ

ionic-card-7

ขั้นตอนต่อไปคิดว่าน่าจะเป็นการบ้านสำหรับผู้อ่าน ลองประยุกต์ดูจากบทเรียนนี้ดูครับ

แล้วเดี๋ยวผมจะมาเฉลยในบทความถัดไป สวัสดีครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน