Panduan Awal untuk Form Pemesanan AngularJS
Hai teman-teman, para ahli AngularJS masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia form pemesanan AngularJS. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - kita akan memulai dari dasar dan membangun ke atas. Pada akhir panduan ini, Anda akan mampu membuat form pemesanan dinamis seperti seorang ahli!
Apa Itu AngularJS?
Sebelum kita mendalam ke form pemesanan, mari kita mengerti apa itu AngularJS. Bayangkan Anda membangun sebuah rumah. HTML seperti batu dan mortar, CSS seperti cat dan hiasan, dan AngularJS? Well, itu seperti sistem rumah cerdas yang membuat segala sesuatu interaktif dan dinamis.
AngularJS adalah kerangka kerja JavaScript yang memperpanjang HTML dengan atribut baru, membuatnya sempurna untuk membuat aplikasi web dinamis. Itu seperti memberikan superpower ke HTML Anda yang biasanya statis!
Menyiapkan Proyek
Pertama-tama, mari kita siapkan proyek kita. Kita akan memasukkan pustaka AngularJS ke dalam file HTML kita. Berikut cara yang kita lakukan:
<!DOCTYPE html>
<html ng-app="orderApp">
<head>
<title>Form Pemesanan AngularJS Saya</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<!-- Form kita akan berada di sini -->
<script src="app.js"></script>
</body>
</html>
Dalam kode ini, kita melakukan beberapa hal penting:
- Kita menambahkan
ng-app="orderApp"
ke tag<html>
. Ini memberitahu AngularJS bahwa ini adalah elemen root dari aplikasi kita. - Kita memasukkan pustaka AngularJS menggunakan tag
<script>
. - Kita juga memasukkan file JavaScript kita sendiri (
app.js
) di mana kita akan menulis kode AngularJS kita.
Membuat Modul dan Controller AngularJS
Sekarang, mari kita buat file app.js
dan mengatur modul dan controller AngularJS kita:
var app = angular.module('orderApp', []);
app.controller('OrderController', function($scope) {
$scope.order = {
items: [],
total: 0
};
});
Berikut apa yang terjadi:
- Kita membuat modul AngularJS bernama 'orderApp'.
- Kita mendefinisikan controller bernama 'OrderController'.
- Dalam controller, kita menginisialisasi objek
order
di$scope
. Objek ini akan menahan item pemesanan dan total.
Membangun Form Pemesanan
Sekarang, mari kita buat form pemesanan kita di HTML:
<div ng-controller="OrderController">
<h2>Place Your Order</h2>
<form>
<label>Nama Item: <input type="text" ng-model="newItem.name"></label><br>
<label>Harga: $<input type="number" ng-model="newItem.price"></label><br>
<button ng-click="addItem()">Tambah Item</button>
</form>
<h3>Ringkasan Pemesanan</h3>
<ul>
<li ng-repeat="item in order.items">
{{item.name}} - ${{item.price}}
<button ng-click="removeItem($index)">Hapus</button>
</li>
</ul>
<p>Total: ${{order.total}}</p>
</div>
mari kitauraikan ini:
- Kita menggunakan
ng-controller
untuk menghubungkan bagian ini dengan OrderController. - Kita memiliki field input untuk nama item dan harga, menggunakan
ng-model
untuk membind mereka kenewItem.name
dannewItem.price
. - Kita memiliki tombol "Tambah Item" yang memanggil fungsi
addItem()
saat ditekan. - Kita menggunakan
ng-repeat
untuk menampilkan setiap item dalam pemesanan. - Setiap item memiliki tombol "Hapus" yang memanggil fungsi
removeItem()
. - Kita menampilkan jumlah total pemesanan.
Implementasi Logika Controller
Sekarang, mari kita tambahkan fungsi yang diperlukan ke controller kita:
app.controller('OrderController', function($scope) {
$scope.order = {
items: [],
total: 0
};
$scope.newItem = {name: '', price: ''};
$scope.addItem = function() {
$scope.order.items.push({
name: $scope.newItem.name,
price: parseFloat($scope.newItem.price)
});
$scope.calculateTotal();
$scope.newItem = {name: '', price: ''};
};
$scope.removeItem = function(index) {
$scope.order.items.splice(index, 1);
$scope.calculateTotal();
};
$scope.calculateTotal = function() {
$scope.order.total = $scope.order.items.reduce(function(sum, item) {
return sum + item.price;
}, 0);
};
});
Berikut apa yang dilakukan setiap fungsi:
-
addItem()
: Menambahkan item baru ke pemesanan, menghitung total baru, dan mengatur ulang field input. -
removeItem()
: Menghapus item dari pemesanan dan menghitung total ulang. -
calculateTotal()
: Menghitung jumlah total harga semua item dalam pemesanan.
Menyempurnakan Pengalaman Pengguna
Untuk membuat form kita lebih user-friendly, mari kita tambahkan validasi:
<form name="orderForm" ng-submit="addItem()" novalidate>
<label>Nama Item: <input type="text" ng-model="newItem.name" required></label><br>
<label>Harga: $<input type="number" ng-model="newItem.price" min="0" step="0.01" required></label><br>
<button type="submit" ng-disabled="orderForm.$invalid">Tambah Item</button>
</form>
Dan perbarui controller kita:
$scope.addItem = function() {
if ($scope.orderForm.$valid) {
$scope.order.items.push({
name: $scope.newItem.name,
price: parseFloat($scope.newItem.price)
});
$scope.calculateTotal();
$scope.newItem = {name: '', price: ''};
$scope.orderForm.$setPristine();
}
};
Perubahan ini:
- Menambahkan validasi form untuk memastikan semua field terisi dan harga adalah angka positif.
- Menonaktifkan tombol "Tambah Item" saat form invalid.
- Menambahkan item hanya jika form valid.
- Mengatur form keadaan awal setelah menambahkan item.
Kesimpulan
Selamat! Anda telah membuat form pemesanan AngularJS yang berfungsi. Kita telah melihat dasar-dasar AngularJS, termasuk modul, controller, two-way data binding, dan validasi form. Ingat, latihan membuat ahli, jadi jangan khawatir untuk mencoba dan memperluas form ini. Mungkin tambahkan fitur diskon atau kemampuan menyimpan pemesanan? Kemungkinan adalah tak terbatas!
Berikut adalah tabel yang menguraikan direktif AngularJS utama yang kita gunakan:
Direktif | Tujuan |
---|---|
ng-app | Menentukan elemen root dari aplikasi AngularJS |
ng-controller | Menentukan controller untuk sebuah bagian aplikasi |
ng-model | Membuat binding data dua arah |
ng-click | Menentukan fungsi yang akan dijalankan saat elemen ditekan |
ng-repeat | Mengulang elemen untuk setiap item dalam koleksi |
ng-submit | Menentukan fungsi yang akan dijalankan saat form disubmit |
ng-disabled | Menonaktifkan elemen berdasarkan kondisi |
Selamat coding, dan ingat - setiap ahli pernah menjadi pemula. Terus latih, dan Anda akan menjadi master AngularJS dalam waktu singkat!
Credits: Image by storyset