ایجاد یک wizard با استفاده از Ui-Router در AngularJS
سه شنبه 27 مهر 1395در این مقاله ، ما یک Wizard مربوط به ثبت نام دانشجویان با استفاده از ui-router و angularJs ایجاد خواهیم کرد. مراحل کار به صورت گام به گام آورده شده اند.
پیش نیازها
در زیر تکنولوژی ها و ابزار مورد نیاز برای ساخت این مقاله آورده شده اند:
1-VS 2015
2-Nuget Package Manager
3-Angular 1.5.x
4-UI Router
مقدمه
در بسیاری از موارد، ما به یک ویزارد احتیاج داریم که کاربران اطلاعات خود را در آن وارد کرده و در نهایت ، یک بار آن ها به سمت سرور ارسال شوند. ما می خواهیم همین کار را با استفاده از AngularJs پیاده سازی کنیم.
1-ابتدا نیاز به ایجاد یک پروژه داریم ، یک پروژه از نوع Empty ایجاد می کنیم و نام آن را Student Wizard می گذاریم.
2-حالا پروژه ما آماده است ، اما ما هیچ فایلی در درون آن نداریم.بنابراین باید فایل های مورد نیازمان را به پروژه اضافه کنیم. با استفاده از Manage Nuget Packages ، فایل های angular و ui-router را به پروژه اضافه می کنیم.
3- بعد از اضافه کردن فایل های مورد نیازمان ، به سراغ سایر موارد می رویم.
4-حالا بیایید angular module خودمان را ایجاد کنیم. یک پوشه جدید به نام App اضافه کنید و در آن ، یک فایل به نام App.js قرار بدهید. برای اضافه کردن این فایل، کافی است بر روی پوشه کلیک راست کرده و Add->JavaScript File را بزنید.
5-حالا بیایید module خودمان را بنویسیم، و route های آن را با استفاده از ui_router تعریف کنیم، در زیر ، کدهایی که در درون فایل App.js قرار دارند ، آورده شده اند. برای این بخش، بهتر است نحوه استفاده از ui-router را بدانید.
var studentApp = angular.module('studentApp', ['ngAnimate', 'ui.router']); //
studentApp.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('student', {
url: '/student',
templateUrl: 'App/Views/student.html',
controller: 'studentController'
}).
//nested states
state('student.profile', {
url: '/profile',
templateUrl: 'App/Views/student-profile.html'
})
.state('student.interests',
{
url: '/interests',
templateUrl: 'App/Views/student-interests.html'
})
.state('student.payment',
{
url: '/payment',
templateUrl: 'App/Views/student-payment.html'
});
$urlRouterProvider.otherwise('/student/profile');
});
6-حالا می خواهیم View های مورد نیازمان را اضافه کنیم. ما به 4 فایل HTML نیاز داریم . یک پوشه جدید درون پوشه ی App ایجاد کرده و نام آن را Views بگذارید. و فایل های student.html, student-profile, student-payment, student-interests.htmlرا در آن ایجاد کنید. درون همه فایل ها را خالی بگذارید.
7-همچنین ما یک صفحه به نام Index.html ایجاد خواهیم کردکه صفحه پیش فرض ما خواهد بود. این فایل در روت پروژه قرار خواهد گرفت. بنابراین بر روی نام پروژه ، کلیک راست کنید و یک صفحه Html جدید به نام index.html ایجاد کنید. refrence مربوط به تمامی فایل های js را در بخش head این صفحه قرار بدهید.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootswatch/3.1.1/darkly/bootstrap.min.css">
<link href="Contents/style.css" rel="stylesheet" />
<script src="Scripts/angular.min.js"></script>
<script src="Scripts/angular-ui-router.js"></script>
<script src="Scripts/angular-animate.min.js"></script>
<script src="App/App.js"></script>
<script src="App/Controller/studentController.js"></script>
</head>
<body ng-app="studentApp">
<div class="container">
<div ui-view></div>
</div>
</body>
</html>
8- ui-view جایی است که تمامی view های ما در آن بارگذاری خواهند شد. بیایید Controller هایمان را اضافه کنیم. برای اضافه کردن یک Contrller درون پوشه ی App یک پوشه به نام controller بسازید ، سپس درون این پوشه یک فایل JavaScript به نام StudentController بسازید.
studentApp.controller('studentController', ['$scope', function ($scope) {
$scope.studentData = {};
$scope.processRequest = function () {
alert('Form Submitted');
}
}]);
9-حالا می خواهیم صفحه ی Students.html را کمی زیباتر کنیم و همچنین برای جابجایی بین صفحات از سه لینک در درون آن استفاده خواهیم کرد:
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<div id="form-container">
<div class="page-header text-center">
<h2>Fill your details</h2>
<div id="status-buttons" class="text-center">
<a ui-sref-active="active"
ui-sref=".profile"><span>1</span> Profile</a>
<a ui-sref-active="active"
ui-sref=".interests"><span>2</span> Interests</a>
<a ui-sref-active="active"
ui-sref=".payment"><span>3</span> Payment</a>
</div>
</div>
<form id="signup-form" ng-submit="processRequest()">
<div id="form-views" ui-view></div>
</form>
</div>
<pre>
{{studentData}}
</pre>
</div>
</div>
10- سپس برای زیباتر کردن صفحات، css زیر را به پروژه مان اضافه می کنیم.
/* style.css */
/* BASIC STYLINGS
============================================================================= */
body { padding-top:20px; }
/* form styling */
#form-container { background:#2f2f2f; margin-bottom:20px;
border-radius:5px; }
#form-container .page-header { background:#151515; margin:0; padding:30px;
border-top-left-radius:5px; border-top-right-radius:5px; }
/* numbered buttons */
#status-buttons { }
#status-buttons a { color:#FFF; display:inline-block; font-size:12px;
margin-right:10px; text-align:center; text-transform:uppercase; }
#status-buttons a:hover { text-decoration:none; }
/* we will style the span as the circled number */
#status-buttons span { background:#080808; display:block; height:30px;
margin:0 auto 10px; padding-top:5px; width:30px;
border-radius:50%; }
/* active buttons turn light green-blue*/
#status-buttons a.active span { background:#00BC8C; }
/* style.css */
/* ANIMATION STYLINGS
============================================================================= */
#signup-form { position:relative; min-height:300px; overflow:hidden; padding:30px; }
#form-views { width:auto; }
/* basic styling for entering and leaving */
/* left and right added to ensure full width */
#form-views.ng-enter,
#form-views.ng-leave { position:absolute; left:30px; right:30px;
transition:0.5s all ease; -moz-transition:0.5s all ease; -webkit-transition:0.5s all ease;
}
/* enter animation */
#form-views.ng-enter {
-webkit-animation:slideInRight 0.5s both ease;
-moz-animation:slideInRight 0.5s both ease;
animation:slideInRight 0.5s both ease;
}
/* leave animation */
#form-views.ng-leave {
-webkit-animation:slideOutLeft 0.5s both ease;
-moz-animation:slideOutLeft 0.5s both ease;
animation:slideOutLeft 0.5s both ease;
}
/* ANIMATIONS
============================================================================= */
/* slide out to the left */
@keyframes slideOutLeft {
to { transform: translateX(-200%); }
}
@-moz-keyframes slideOutLeft {
to { -moz-transform: translateX(-200%); }
}
@-webkit-keyframes slideOutLeft {
to { -webkit-transform: translateX(-200%); }
}
/* slide in from the right */
@keyframes slideInRight {
from { transform:translateX(200%); }
to { transform: translateX(0); }
}
@-moz-keyframes slideInRight {
from { -moz-transform:translateX(200%); }
to { -moz-transform: translateX(0); }
}
@-webkit-keyframes slideInRight {
from { -webkit-transform:translateX(200%); }
to { -webkit-transform: translateX(0); }
}
11- حالا بیایید تعدادی کنترل به هر 3 فرم اضافه کنیم. صفحه Profile را باز کنید و تعدادی کنترل برای داده های پروفایل، مانند نام، نام خانوادگی و ایمیل اضافه کنید. در نهایت یک دکمه هم قرار می دهیم.
<div class="form-group">
<label for="name" align="center">نام</label>
<input type="text" class="form-control"
name="name" ng-model="studentData.FirstName" />
</div>
<div class="form-group">
<label for="name">نام خانوادگی</label>
<input type="text" class="form-control"
name="name" ng-model="studentData.LastName" />
</div>
<div class="form-group">
<label for="name">آدرس ایمیل</label>
<input type="text" class="form-control"
name="email" ng-model="studentData.email" />
</div>
<div class="form-group row">
<div class="col-xs-6 col-xs-offset-3">
<a href="student-interests.html" class="btn btn-block btn-info">
پردازش <span class="glyphicon glyphicon-circle-arrow-right"></span>
</a>
</div>
</div>
12- برای این که بتوانید تغییرات ایجاد شده را ببنید، یک بار با زدن F5 از برنامه اجرا بگیرید.
13- تکه کدهای زیر را در صفحه interests قرار بدهید.
<!-- form-interests.html -->
<label>در کدام واحد، علاقه مند به تحصیل هستید؟</label>
<div class="form-group">
<div class="radio">
<label>
<input type="radio"
ng-model="studentData.type" value="Computers" checked>
کامپیوتر
</label>
</div>
<div class="radio">
<label>
<input type="radio"
ng-model="studentData.type" value="Electronics">
الکترونیک
</label>
</div>
<div class="radio">
<label>
<input type="radio"
ng-model="studentData.type" value="Mechanical">
مکانیک
</label>
</div>
</div>
<div class="form-group row">
<div class="col-xs-6 col-xs-offset-3">
<a href="student-payment.html" class="btn btn-block btn-info">
رفتن به مرحله پرداخت<span class="glyphicon glyphicon-circle-arrow-right"></span>
</a>
</div>
</div>
14-کدهای زیر را در صفحه ی Payment وارد کنید.
<!-- form-payment.html -->
<div class="text-center">
<span></span>
<h3>برای پرداخت پول از شما سپاس گذاریم.</h3>
<button type="submit" class="btn btn-danger">
<a href="student.html">تایید </a>
</button>
</div>
حالا از برنامه اجرا بگیرید و خروجی کار را ببینید.
آموزش angular
- AngularJs
- 2k بازدید
- 2 تشکر