Concepto de estados de AngularJS
-
el Concepto de
States
en AngularJS -
Inicializar un
State
en AngularJS -
Use el
Proveedor de estado
para proporcionar el estado para cualquier aplicación dada en AngularJS -
Diferencia entre
$stateProvider
y$routeProvider
en AngularJS -
Ejemplo de AngularJS
Estados
Este artículo explorará el concepto de State
en AngularJS
y cómo usarlo para construir una aplicación simple.
el Concepto de States
en AngularJS
El STATE
en AngularJS
es un mecanismo que nos permite actualizar la vista en función de los cambios en el modelo. Es un enlace bidireccional entre datos y elementos DOM.
Además, el State
nos ayuda a realizar un seguimiento de los datos que cambian con el tiempo, como si se presionó o no un botón en particular.
Inicializar un State
en AngularJS
Configurar un STATE
en AngularJS
es relativamente fácil. Utilice el método State()
del servicio $stateProvider
para configurar un estado.
Los argumentos stateName
y stateConfig
se utilizan en este procedimiento. stateName es un nombre único para un estado, y puede ser algo como /home
, /aboutus
, /Contactus
, etc.
El stateConfig
es un objeto de configuración de estado que tiene propiedades como templates
, templateURL
y ResolveURL
.
Use el Proveedor de estado
para proporcionar el estado para cualquier aplicación dada en AngularJS
El $stateProvider
es un módulo utilizado en AngularJS
para proporcionar el Estado para cualquier aplicación dada.
No es necesario utilizar un enlace directo a una ruta para proporcionar al estado un nombre, un controlador diferente o una perspectiva diferente.
Más o menos, se comporta igual que el $routeProvider,
, pero en lugar de URLs
, se centra únicamente en el Estado. Podemos aprovechar varias funciones proporcionadas por UI-Route
.
Además, puede tener numerosas vistas de interfaz de usuario
en una sola página. Se pueden anidar y mantener varias vistas estableciendo State en el paso de enrutamiento.
Haga clic aquí para obtener más información sobre el proveedor de estado angular.
Diferencia entre $stateProvider
y $routeProvider
en AngularJS
$stateProvider |
$routeProvider |
---|---|
Hace uso del módulo de terceros ui-router para aumentar y expandir las funciones de enrutamiento. |
Hace uso del módulo ngRoute AngularJS . |
Representa el $stateProvider.state() |
Representa el $routeProvider.when() |
ui-router crea enrutamiento dependiendo del estado actual de la aplicación. |
ngRoute utiliza la URL de la ruta para realizar el enrutamiento. |
ui-router hace uso de $state.go() |
ng-router hace uso de $location.path() |
Para pasar de una página o sección a otra: $state.go('Services'); |
Para pasar de una página o sección a otra: $location.path('Services'); |
Ejemplo de AngularJS Estados
Para entender claramente el concepto de estados, analicemos un ejemplo.
Nuestro primer paso es definir el $stateProvider
.
var app = angular.module('app', ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/index");
$stateProvider
Después de eso, escribamos el código JavaScript y HTML completo.
var app = angular.module('app', ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/index");
$stateProvider
// index
.state('index', {
url: "/index",
views: {
'menu-view': {
templateUrl:"menu.html"
},
'container-view': {
templateUrl:"home.html"
},
'left-view@index' :{
templateUrl:"entries.html"
},
'status-view': {
template:"<p>index<p>"
},
},
})
.state('entries', {
url: "/entries",
views: {
'menu-view': {
templateUrl:"menu.html"
},
'container-view': {
templateUrl:"entries.html"
},
'status-view': {
template:"<p>entries<p>"
},
},
})
.state('entries.add', {
url: "/add",
views: {
'bottom-view@entries': {
templateUrl:"entries.add.html"
},
'status-view@': {
template:"<p>entries.add<p>"
},
},
})
.state('entries.list', {
url: "/list",
views: {
'bottom-view@entries': {
templateUrl:"entries.list.html"
},
'status-view@': {
template:"<p>entries.list<p>"
},
},
})
});
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.11/angular-ui-router.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.12.0/ui-bootstrap-tpls.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
</head>
<body ng-app="app">
<div class="container">
<div class="row">
<div ui-view="menu-view" class="col-md-2"></div>
<div ui-view="container-view" class="col-md-10"></div>
</div>
<div class="pull-right">
<div style="width: auto; float:left; margin-right:10px">status:</div>
<strong style="width: auto; float:left;" ui-view="status-view"> </strong>
</div>
</div>
<script id="menu.html" type="text/ng-template">
<div class="alert alert-info">
<h3><a ui-sref="index">Home</a></h3>
<h3><a ui-sref="entries">Entries</a></h3>
</div>
</script>
<!-- home -->
<script id="home.html" type="text/ng-template">
<h4>Home</h4>
<div ui-view="left-view" class="col-md-7">
</script>
<script id="entries.html" type="text/ng-template">
<div class="alert alert-warning">
<strong>Entries</strong>
<h5><a ui-sref="entries.add">add new</a></h5>
<h5><a ui-sref="entries.list">view list</a></h5>
<div style="background:white">
<div ui-view="bottom-view"></div>
</div>
</div>
</script>
<script id="entries.add.html" type="text/ng-template">
Create new Entry <input type=text/>
</script>
<script id="entries.list.html" type="text/ng-template">
<ol>
<li>First Entry</li>
<li>Second Entry</li>
<li>Third Entry</li>
</ol>
</script>
<script id="arrivals.html" type="text/ng-template">
<div class="alert alert-success">
<div style="background:white">
<div ui-view="bottom-view"></div>
</div>
</div>
</body>
</html>
Para verificar el código de trabajo completo mencionado anteriormente, haga clic aquí.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook