PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ใช้งาน service http ดึงข้อมูลจาก ไฟล์ json ใน angularjs ตอนที่ 5

21 August 2014 By


เนื้อหาในบทความตอนนี้ เราจะมาทำความรู้จักกับ service $http ของ
angularjs โดยจะใช้ในการดึงข้อมูล object ในไฟล์ json
โดยได้เตรียมไฟล์ข้อมูลไว้แล้ว
 
ดูตัวอย่างการสร้างไฟล์ json เพื่อรองรับการใช้งานแบบ jsonp ได้ที่
สร้างไฟล์ json จากฐานข้อมูล รองรับการใช้งาน jsonp callback 
http://www.ninenik.com/content.php?arti_id=523 via @ninenik
 
สำหรับไฟล์ ในการทดสอบคือ
http://www.ninenik.com/demo/today_view_article.php?callback=JSON_CALLBACK
 
จะเป็นข้อมูล บทความในเว็บไซต์ ที่มีคนเปิดดูวันนี้ 
ลักษณะ โครงสร้างของไฟล์ json จะมี
 
{
    "id":"",
    "topic":"",
    "description":"",
    "date":"",
    "img":"",
    "url":"",
    "view":""
}
ก่อนเริ่ม ให้เข้าใจก่อนว่า เนื้อหา บทความเกี่ยวกับ angularjs จะมีการใช้
css ของ bootstrap ซึ่งอธิบายในบทความก่อนหน้า สามารถย้อนกลับไปดูได้
ดังนั้น ในบางส่วนบางจุด จะข้ามการอธิบายแบบละเอียด เพราะได้ถือ ผู้อ่าน
ได้อ่านบทความก่อนหน้ามาแล้ว หากใครยังไม่ได้อ่าน สามารถย้อนกลับไป
ศึกษาดูได้
 
1. โครงสร้างไฟล์ index.html 
ไฟล์นี้ ที่เราจะแสดงข้อมูลจาก ไฟล์ json ในรูปแบบตาราง จัดรูปแบบด้วย bootstrap
 css 
โดยจะทำการดึงหัวข้อ topic,date,view จาก ไฟล์ json มาแสดง
 
<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta charset="utf-8" />
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js"></script>
    <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" />
    <script src="app.js"></script>
    <title>My Learn AngularJs 5</title>
    <style type="text/css">

    </style>
</head>
<body ng-controller="appController">

    <br>
    <div class="container">
    
    <table class="table table-stroped">
        <tr class="active">
            <th>#</th>
            <th>Topic</th>
            <th>Date</th>
            <th>View</th>
        </tr>
        <tr ng-class-even="'warning'"  ng-repeat="article in articles">
            <td>{{$index+1}}</td>
            <td>{{article.topic}}</td>
            <td>{{article.date}}</td>
            <td>{{article.view}}</td>
        </tr>
    </table>

    </div>


</body>
</html>
 
ไฟล์นี้ ดูเฉพาะบรรทัดที่ 25-30
บรรทัดที่ 25 เราจะได้รู้กจักกับ ngClassEven ใน html จะเขียน ng-class-even
เป็นการกำหนด css ให้กับแถวของข้อมูล ที่เป็นลำดับเลขคู่
ถ้าเป็นเลขคี่ จะใช้ ngClassOdd ใน html จะเขียน ng-class-odd
 
 ng-class-even="'warning'"  จึงหมายถึง ถ้าเป็น แถวคู่ ให้ใช้ css class ชื่อ warning
 
* ถ้าพูดถึง css class จะหมายถึง css ของ bootstrap เสมอ ซึ่งถ้าเราไม่ได้ใช้ bootstrap ก็สามารถกำหนดเป็นชื่ออื่นได้
 
ต่อไป ngRepeat อันนี้คุ้นบ่อย คือการวนลูปแสดงข้อมูล จากค่า model ของ scope
 
ng-repeat="article in articles"  จึงหมายถึง ให้ตัวแปร article รับค่าจาก scope model
ที่ชื่อ articles มาวนลูปแสดงข้อมูล
 
บรรทัดที่ 26 บรรทัดนี้ เราจะได้รู้จักกับ $index ตัวนี้ก็เปรียบเสมือน index ของ array object เริ่มต้นจาก 0  ในที่นี้ เราต้องการแสดงลำดับ รายการว่ามีลำดับ ตั้งแต่ 1-10
 
{{$index+1}}   จึงหมายถึง แสดงค่า index โดยบวกเพิ่มครั้งละ 1
 
บรรทัดที่ 27-29 ส่วนนี้แสดงช้อมูล ตามปกติ โดยอ้างอิงชื่อ จาก json ไฟล์ด้านบน
 
{{article.topic}} หัวข้อบทความ
{{article.date}}  วันที่
{{article.view}}  จำนวนคลิกเปิดดู
 
 
2. ไฟล์ app.js และการใช้งาน service http ใน angularjs 
 
ไฟล์ app.js คำอธิบายแสดงในโค้ด
 
angular.module("app",[]) // สร้าง module
.service("ninenik",["$http",function($http){ // สร้าง service ชื่อ ninenik และเรียกใช้งาน $http service
    // service ชื่อ ninenik กำหนดฟังก์ชั่น ชื่อ showArticle โดยส่งค่า scope เขาใปในฟังก์ชั่น
    this.showArticle = function($scope){
        // กำหนดไฟล์ json ที่รองรับการเรียกใช้งาน แบบ่ jsonp
         var url="http://www.ninenik.com/demo/today_view_article.php?callback=JSON_CALLBACK";
        // ใช้ $http service  เรียกใช้งาน json ไฟล์ ตาม url ที่กำหนด ด้วยคำสั่ง jsonp
        $http.jsonp(url).success(function(result){ // ถ้าสำเร็จส่ง object ชื่อ result กลับมา
            // สั่งเกต ตัวแปร $scope ที่เราส่งเข้ามาในฟังก์ชั่น 
            // เพื่อเข้ามากำหนดค่า model data หรือชุดข้อมูล ให้เท่ากับ result
            $scope.articles=result; // ค่า articles จะถูกนำไปใช้งานในไฟล์ index.html
        }).error(function(){
            // กรณีผดพลาด หรือไม่สามารถเรียกไฟล์ได้
        });       
    };
}])
// กำหนด controller ตามชื่อในไฟล์ index.html เรียกใช้งาน $scope และ service ชื่อ ninenik 
.controller("appController",["$scope","ninenik",function($scope,ninenik){
    // กำหนด model data ชื่อ articles เป้นแบบ array
    $scope.articles=[];
    // จะเห็นว่า มีการสั่ง service ชื่อ ninenik เข้ามา เพื่อที่จะทำการเรียกใช้งาน
    // ฟังก์ชั่น showArticle($scope) โดยมีการส่งค่า $scope เขาไปในฟังก์ชั่นด้วย
    // เพื่อที่จะเอาตัวแปร model data ไปรับค่าจาก ฟังก์ชั่นใน sevice
    ninenik.showArticle($scope);
}]);
 
ไฟล์ app.js ไม่มีคำอธิบาย
 
angular.module("app",[])
.service("ninenik",["$http",function($http){
    this.showArticle = function($scope){
         var url="http://www.ninenik.com/demo/today_view_article.php?callback=JSON_CALLBACK";
        $http.jsonp(url).success(function(result){
            $scope.articles=result; 
        }).error(function(){
 
        });       
    };
}])
.controller("appController",["$scope","ninenik",function($scope,ninenik){
    $scope.data1="1";
    $scope.articles=[];
    ninenik.showArticle($scope);
}]);
 
ตัวอย่างผลลัพธ์
 
 
 
การใช้งาน service http จะมีให้ใช้งานหลายแบบ คล้ายกับการเรียกใช้งาน ajax
สำหรับเนื้อหาตอนนี้ก็จบเพียงเท่านี้ 
ตอนหน้าจะเกี่ยวกับอะไร รอติดตาม

Tags:: http service json angularjs

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





URL สำหรับอ้างอิง