() translation by (you can also view the original English article)
En la parte anterior de esta serie, implementamos el proceso de inicio de sesión y registro usando la API de Eve que creamos en la primera parte de la serie. Usamos Node.js y AngularJS para crear y ejecutar nuestra aplicación.
En este
tutorial, llevaremos nuestro desarrollo de aplicaciones al siguiente
nivel utilizando las API Add
, Edit
and Delete
para crear elementos
en la página de inicio del usuario.
Empezando
Para comenzar, clone el código fuente del tutorial anterior de GitHub.
1 |
git clone https://github.com/jay3dec/AngularEveApp_Part1.git |
Una vez hecho esto, navegue a AngularEveApp_Part1
e instale las dependencias.
1 |
npm install
|
2 |
bower install
|
Asegúrese de que se estén ejecutando las API REST de Python Eve. Inicie el servidor de la aplicación.
1 |
node app.js |
Apunte su navegador a http://localhost:3000 y debería tener la aplicación ejecutándose.
Crear inicio de usuario
Después de que el usuario inicie sesión con éxito,
llevaremos al usuario a la página de inicio. Entonces, comencemos
creando userHome.html
. Navegue a la carpeta pública public
y cree una nueva
carpeta llamada userHome
. Inside userHome
crea archivos llamados
userHome.html
y userHome.js
. Abra userHome.html
y agregue el siguiente
código HTML:
1 |
<div class="container"> |
2 |
<div class="header"> |
3 |
<nav>
|
4 |
<ul class="nav nav-pills pull-right"> |
5 |
<li role="presentation" class="active"><a href="#userHome">Home</a></li> |
6 |
<li role="presentation"><a href="#addItem">Add</a></li> |
7 |
<li role="presentation"><a href="#">Logout</a></li> |
8 |
</ul>
|
9 |
</nav>
|
10 |
<h3 class="text-muted">Home</h3> |
11 |
</div>
|
12 |
<h1>Data will be displayed here !!</h1> |
13 |
|
14 |
<footer class="footer"> |
15 |
<p>© Company 2015</p> |
16 |
</footer>
|
17 |
|
18 |
</div>
|
Inside userHome.js
define el módulo userHome
y su plantilla y controlador. Por lo tanto, abra userHome.js
y agregue el siguiente código:
1 |
'use strict'; |
2 |
|
3 |
angular.module('userHome', ['ngRoute']) |
4 |
|
5 |
.config(['$routeProvider', function($routeProvider) { |
6 |
$routeProvider.when('/userHome', { |
7 |
templateUrl: '../userHome/userHome.html', |
8 |
controller: 'UserHomeCtrl' |
9 |
});
|
10 |
}])
|
11 |
|
12 |
.controller('UserHomeCtrl', ['$scope', function($scope) { |
13 |
|
14 |
}]);
|
Agregue una referencia a userHome.js
en la página index.html
.
1 |
<script src="userHome/userHome.js"></script> |
Inyecte el módulo userHome
en la aplicación myApp
en index.js
.
1 |
angular.module('myApp', [ |
2 |
'ngRoute', |
3 |
'home', |
4 |
'signin', |
5 |
'userHome' |
6 |
]).
|
7 |
config(['$routeProvider', function($routeProvider) { |
8 |
$routeProvider.otherwise({redirectTo: '/home'}); |
9 |
}]);
|
En la
función signIn
en signin.js
, en la devolución de llamada
exitosa de la solicitud de $http
, redirija a la vista /userHome
.
1 |
$location.path('/userHome'); |
Guarde los cambios anteriores y reinicie el servidor de nodos. Apunte su navegador a http://localhost:3000 e inicie sesión con un nombre de usuario y contraseña válidos. Una vez que haya iniciado sesión correctamente, debería poder ver la página de inicio del usuario con la vista predeterminada.



Crear una página Agregar tarea
Agreguemos una vista para permitir al usuario agregar elementos. Navegue
a la carpeta pública public
y cree una carpeta llamada addItem
. Dentro de la
carpeta addItem
, cree dos archivos llamados addItem.html
y addItem.js
.
Abra addItem.html
y agregue el siguiente código HTML:
1 |
<div class="container"> |
2 |
<div class="header"> |
3 |
<nav>
|
4 |
<ul class="nav nav-pills pull-right"> |
5 |
<li role="presentation"><a href="#userHome">Home</a></li> |
6 |
<li role="presentation" class="active"><a href="#addItem">Add</a></li> |
7 |
<li role="presentation"><a href="#">Logout</a></li> |
8 |
</ul>
|
9 |
</nav>
|
10 |
<h3 class="text-muted">Home</h3> |
11 |
</div>
|
12 |
|
13 |
|
14 |
<div class="row"> |
15 |
|
16 |
<div class="col-md-8 col-sm-8 col-xs-8"> |
17 |
<input id="txtTitle" name="txtTitle" type="text" ng-model="title" placeholder="Enter Task" class="form-control input-md"> |
18 |
</div>
|
19 |
|
20 |
<div class="col-md-4 col-sm-4 col-xs-4"> |
21 |
<input id="singlebutton" name="singlebutton" class="btn btn-primary" ng-click="addItem(title)" value="Add Task" /> |
22 |
</div>
|
23 |
|
24 |
|
25 |
</div>
|
26 |
|
27 |
|
28 |
<footer class="footer"> |
29 |
<p>© Company 2015</p> |
30 |
</footer>
|
31 |
|
32 |
</div>
|
A continuación, abra addItem.js
y agregue el siguiente código para definir la ruta, la plantilla y el controlador.
1 |
'use strict'; |
2 |
|
3 |
angular.module('addItem', ['ngRoute']) |
4 |
|
5 |
.config(['$routeProvider', function($routeProvider) { |
6 |
$routeProvider.when('/addItem', { |
7 |
templateUrl: '../addItem/addItem.html', |
8 |
controller: 'AddItemCtrl' |
9 |
});
|
10 |
}])
|
11 |
|
12 |
.controller('AddItemCtrl', [function() { |
13 |
|
14 |
}]);
|
Abra userHome.html
y modifique la href
del enlace Agregar para señalar la ruta correcta.
1 |
<li role="presentation" ><a href="#addItem">Add</a></li> |
Agregue una referencia a addItem.js
en index.html
.
1 |
<script src="addItem/addItem.js"></script> |
Inyecte el módulo addItem
en myApp
en index.js
.
1 |
angular.module('myApp', [ |
2 |
'ngRoute', |
3 |
'home', |
4 |
'signin', |
5 |
'userHome', |
6 |
'addItem' |
7 |
]).
|
8 |
config(['$routeProvider', function($routeProvider) { |
9 |
$routeProvider.otherwise({redirectTo: '/home'}); |
10 |
}]);
|
Guarde los siguientes cambios y reinicie el servidor de nodos. Una vez que haya iniciado sesión, haga clic en el enlace Agregar Add y podrá ver la página Agregar elemento.



Agregar elementos usando la API de Eve
Para agregar elementos, necesitaremos los authdata
base64
. Por
lo tanto, en el inicio de sesión exitoso mantendremos el nombre de
usuario y los datos de autenticación dentro de un servicio AngularJS
. Navegue a la carpeta public
y cree una carpeta llamada service
. Dentro
de la carpeta service
crea un archivo llamado service.js
. Vamos a
crear un nuevo módulo de servicio llamado myAppService
.
1 |
angular.module('myAppService',[]) |
Agregue un nuevo servicio al módulo myAppService
.
1 |
.service('CommonProp', function() { |
2 |
|
3 |
});
|
Dentro del servicio CommonProp
, definiremos algunas funciones para obtener y establecer el username
y authData
.
1 |
.service('CommonProp', function() { |
2 |
var user = ''; |
3 |
var userAuth = ''; |
4 |
|
5 |
return { |
6 |
getUser: function() { |
7 |
return user; |
8 |
},
|
9 |
setUser: function(value) { |
10 |
user = value; |
11 |
},
|
12 |
getUserAuth: function() { |
13 |
return userAuth; |
14 |
},
|
15 |
setUserAuth: function(value) { |
16 |
userAuth = value; |
17 |
}
|
18 |
};
|
19 |
});
|
Incluye una referencia al servicio en index.html
.
1 |
<script src="service/service.js"></script> |
A continuación, inserte el módulo myAppService
creado anteriormente en el módulo signin
.
1 |
angular.module('signin', ['base64','ngRoute','myAppService']) |
Inyecte el servicio CommonProp
requerido en el controlador SignInCtrl
.
1 |
.controller('SignInCtrl',['$scope','$http','$base64','$window','$location','CommonProp',function($scope,$http,$base64,$window,$location,CommonProp) |
En la
devolución de llamada con éxito de $http
, agregue el siguiente código
para mantener el nombre de usuario y authData en el servicio.
1 |
CommonProp.setUser(username); |
2 |
CommonProp.setUserAuth(authdata); |
A continuación, abra addItem.js
e inserte el módulo myAppService
.
1 |
angular.module('addItem', ['ngRoute','myAppService']) |
Inyecte el servicio CommonProp
en AddItemCtrl
.
1 |
.controller('AddItemCtrl', ['$scope','CommonProp','$http','$location',function($scope,CommonProp,$http,$location) |
Abra
addItem.html
y agregue el ngModel
y ngClick
al cuadro de
texto de la tarea y al botón Add task, respectivamente.
1 |
<div class="col-md-8 col-sm-8 col-xs-8"> |
2 |
<input id="txtTitle" name="txtTitle" type="text" ng-model="title" placeholder="Enter Task" class="form-control input-md"> |
3 |
</div>
|
4 |
|
5 |
<div class="col-md-4 col-sm-4 col-xs-4"> |
6 |
<input id="singlebutton" name="singlebutton" class="btn btn-primary" ng-click="addItem(title)" value="Add Task" /> |
7 |
</div>
|
Dentro de addItem.js
se define una nueva función llamada addItem
.
1 |
$scope.addItem = function(title){ |
2 |
// Add item logic will be here !
|
3 |
}
|
Dentro de la función addItem
, hagamos nuestra llamada de $http
a la API REST de Python Eve. Primero, necesitaremos obtener el nombre de usuario y los datos de autenticación del usuario del servicio.
1 |
var auth = CommonProp.getUserAuth(); |
2 |
|
3 |
var user = CommonProp.getUser(); |
Establezcamos los encabezados necesarios para hacer la llamada API.
1 |
$http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"}; |
2 |
$http.defaults.headers.common = {"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept"}; |
3 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
4 |
$http.defaults.headers.common.Pragma = "no-cache"; |
5 |
$http.defaults.headers.common['Authorization'] = 'Basic '+auth; |
Una vez que se hayan establecido los encabezados, usemos $http
para hacer una llamada a la API para agregar el elemento.
1 |
$http({ |
2 |
method: 'POST', |
3 |
cache: false, |
4 |
url: 'http://127.0.0.1:5000/item', |
5 |
data: { |
6 |
name: title, |
7 |
username: user |
8 |
}
|
9 |
}).
|
10 |
success(function(data, status, headers, config) { |
11 |
$location.path('/userHome'); |
12 |
}).
|
13 |
error(function(data, status, headers, config) { |
14 |
console.log(data, status); |
15 |
});
|
Guarde los cambios y reinicie el servidor de nodos. Apunte su navegador a http://localhost:3000 e inicie sesión. Haga clic en el enlace Add, ingrese una tarea y haga clic en Add Task. En llamadas API exitosas, debe ser redirigido a la página de inicio del usuario.
Obtener tareas de la API de Eve
Cuando
se carga la página de inicio del usuario, realizaremos una llamada de
API para recuperar los elementos agregados por el usuario en particular.
Para realizar la llamada a la API necesitaremos el nombre de usuario username
y
el authData
. Por lo tanto, inyecte el módulo myAppService
en el módulo
userHome
.
1 |
angular.module('userHome', ['ngRoute','myAppService']) |
Inyecte el servicio CommonProp
en UserHomeCtrl
.
1 |
.controller('UserHomeCtrl',['$scope','CommonProp','$http','$location', function($scope,CommonProp,$http,$location) |
A continuación, busquemos el nombre de usuario username
y authData
de CommonProp
.
1 |
var auth = CommonProp.getUserAuth(); |
2 |
|
3 |
var user = CommonProp.getUser(); |
Establezca los encabezados necesarios para realizar la llamada API.
1 |
$http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"}; |
2 |
$http.defaults.headers.common = {"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept"}; |
3 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
4 |
$http.defaults.headers.common.Pragma = "no-cache"; |
5 |
$http.defaults.headers.common['Authorization'] = 'Basic '+auth; |
Para obtener las tareas creadas por un usuario en particular, haremos una solicitud $http GET a http://127.0.0.1:5000/item?where={"username":"'+user+'"}'.
1 |
$http({ |
2 |
method: 'GET', |
3 |
cache: false, |
4 |
url: 'http://127.0.0.1:5000/item?where={"username":"' + user + '"}' |
5 |
}).
|
6 |
success(function(data, status, headers, config) { |
7 |
console.log(data); |
8 |
}).
|
9 |
error(function(data, status, headers, config) { |
10 |
console.log(data, status); |
11 |
});
|
En una llamada API exitosa, analizaremos los datos devueltos y estableceremos los datos en una variable $scope
.
Primero, creemos una variable de tareas:
1 |
$scope.tasks = []; |
Ahora, analicemos los datos devueltos y completemos la variable tasks
.
1 |
for (var i = 0; i < data._items.length; i++) { |
2 |
$scope.tasks.push({ |
3 |
'title': data._items[i].name |
4 |
});
|
5 |
}
|
En userHome.html
, iteraremos sobre la variable de tareas y presentaremos las tareas recuperadas para un usuario en particular. Haremos uso de la directiva ngRepeat
para iterar sobre la variable de tareas.
1 |
<div class="list-group" ng-repeat="task in tasks"> |
2 |
<a href="#" onclick="return false;" class="list-group-item active"> |
3 |
|
4 |
<p class="list-group-item-text">{{task.title}}</p> |
5 |
|
6 |
</a>
|
7 |
</div>
|
Guarde los cambios anteriores y reinicie el servidor. Apunte su navegador a http://localhost:3000 e inicie sesión. Cuando inicie sesión con éxito, podrá ver las tareas agregadas por el usuario que inició sesión.



Edición y eliminación de un elemento de tarea
Edición de tareas
Agreguemos
un botón de edición y eliminación a la lista de tareas en la página de
inicio del usuario, para permitir la edición y eliminación de las
tareas, respectivamente. Abra userHome.html
y agregue el siguiente código HTML al div .list-group
.
1 |
<span class="pull-right"> |
2 |
<button class="btn btn-xs btn-info" ng-click="editTask(task.title,task.id,task.tag)" data-target="#editModal">EDIT</button> |
3 |
|
4 |
<button class="btn btn-xs btn-warning" ng-click="confirmDelete(task.id,task.tag)" data-target="#deleteModal" >DELETE</button> |
5 |
</span>
|
Utilizaremos
modales de arranque para mostrar la tarea que se va a editar, por lo
tanto, incluya jQuery y Bootstrap en index.html
.
1 |
<script src="https://code.jquery.com/jquery-2.0.1.min.js"></script> |
2 |
|
3 |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> |
Agregue el siguiente código HTML a userHome.html
para la ventana emergente modal para editar.
1 |
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true"> |
2 |
<div class="modal-dialog"> |
3 |
<div class="modal-content"> |
4 |
<div class="modal-header"> |
5 |
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span> |
6 |
</button>
|
7 |
<h4 class="modal-title" id="editModalLabel">Update Task</h4> |
8 |
</div>
|
9 |
<div class="modal-body"> |
10 |
<form role="form"> |
11 |
<div class="form-group"> |
12 |
<label for="recipient-name" class="control-label">Title:</label> |
13 |
<input type="text" class="form-control" ng-model="edit.task" id="recipient-name"> |
14 |
</div>
|
15 |
</form>
|
16 |
</div>
|
17 |
<div class="modal-footer"> |
18 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button> |
19 |
<button type="button" class="btn btn-primary" ng-click="update()">Update</button> |
20 |
</div>
|
21 |
</div>
|
22 |
</div>
|
23 |
</div>
|
A continuación, abra userHome.js
y cree una nueva función llamada editTask
que se invocará al hacer clic en el botón editar.
1 |
$scope.edit = {}; |
2 |
|
3 |
$scope.editTask = function(title,id,tag){ |
4 |
$scope.edit.task = title; |
5 |
$scope.edit.id = id; |
6 |
$scope.edit.tag = tag; |
7 |
$('#editModal').modal('show'); |
8 |
}
|
Como
se ve en el código anterior, hemos asignado el title
, id
y tag
del registro particular a la variable $scope.edit.task
. Si el usuario elige actualizar el registro en particular, usaremos los datos de $scope.edit
para la actualización.
Guarde todos los cambios anteriores y reinicie el servidor. Una vez que haya iniciado sesión correctamente, haga clic en el botón Editar para editar una tarea, y debe tener la ventana emergente modal.



Anteriormente, realizamos una solicitud de $http
desde el UserHomeCtrl
. Vamos a convertir eso en una función adecuada, ya que tendremos que llamar a eso en el futuro. Aquí está la función getAllTask
.
1 |
var getAllTask = function(){ |
2 |
$scope.tasks = []; |
3 |
$http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"}; |
4 |
$http.defaults.headers.common = {"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept"}; |
5 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
6 |
$http.defaults.headers.common.Pragma = "no-cache"; |
7 |
$http.defaults.headers.common['Authorization'] = 'Basic '+auth; |
8 |
|
9 |
$http({method: 'GET',cache: false, url: 'http://127.0.0.1:5000/item?where={"username":"'+user+'"}'}). |
10 |
success(function(data, status, headers, config) { |
11 |
|
12 |
for(var i=0;i<data._items.length;i++){ |
13 |
$scope.tasks.push({'title': data._items[i].name,'id':data._items[i]._id,'tag':data._items[i]._etag}); |
14 |
}
|
15 |
|
16 |
}).
|
17 |
error(function(data, status, headers, config) { |
18 |
console.log(data,status); |
19 |
});
|
20 |
}
|
21 |
|
22 |
getAllTask(); |
A continuación, cree una función llamada update
in userHome.js
a la que llamaremos para actualizar la tarea editada. Dentro
de la función de actualización haremos una solicitud de PATCH
a
http://127.0.0.1:5000/item/(item-id) con los datos que se actualizarán. La
API de Eve espera que se pase un encabezado tag id
cuando se
realiza una solicitud de actualización, por lo que también le pasaremos
el tag id
en el encabezado de la solicitud. Dentro de la
función de actualización, primero declararemos los encabezados
necesarios para la solicitud $http
.
1 |
$http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"}; |
2 |
$http.defaults.headers.common = {"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept"}; |
3 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
4 |
$http.defaults.headers.common.Pragma = "no-cache"; |
5 |
$http.defaults.headers.common['Authorization'] = 'Basic '+auth; |
6 |
$http.defaults.headers.common['If-Match'] = $scope.edit.tag; |
Una vez que se hayan definido los encabezados, haremos la solicitud PATCH
$http.
1 |
$http({ |
2 |
method: 'PATCH', |
3 |
cache: false, |
4 |
url: 'http://127.0.0.1:5000/item/' + $scope.edit.id, |
5 |
data: { |
6 |
name: $scope.edit.task |
7 |
}
|
8 |
}).
|
9 |
success(function(data, status, headers, config) { |
10 |
$('#editModal').modal('hide'); |
11 |
getAllTask(); |
12 |
}).
|
13 |
error(function(data, status, headers, config) { |
14 |
console.log(data, status); |
15 |
});
|
Como se ve en el código anterior, en la actualización exitosa cerramos el modo de edición y volvimos a cargar todas las tareas relacionadas con el usuario en particular.
Guarde todos los cambios y reinicie el servidor. Apunte su navegador a http://localhost:3000 e inicie sesión con credenciales válidas. Una vez que haya iniciado sesión, intente editar una tarea en particular haciendo clic en el botón Editar.
Eliminando Tareas
Antes de eliminar una
tarea, debemos mostrar una ventana emergente de confirmación. Por lo
tanto, en userHome.html
agregue el siguiente código HTML para la ventana
emergente de confirmación de eliminación.
1 |
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true"> |
2 |
<div class="modal-dialog"> |
3 |
<div class="modal-content"> |
4 |
<div class="modal-header" style="text-align:center;"> |
5 |
<h4 class="modal-title" style="color:red;" id="deleteModalLabel">You are about to Delete this Task !!</h4> |
6 |
</div>
|
7 |
|
8 |
<div class="modal-footer"> |
9 |
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> |
10 |
<button type="button" class="btn btn-primary" ng-click="deleteTask()">Delete</button> |
11 |
</div>
|
12 |
</div>
|
13 |
</div>
|
14 |
</div>
|
A
continuación, debemos definir una función llamada confirmDelete
que ya
hemos adjuntado al botón Eliminar utilizando la directiva ngClick
. Dentro
de la función confirmDelete
guardaremos la identificación de la tarea y
el TAG que se requerirán cuando llamemos a Delete API. Aquí está la función confirmDelete
:
1 |
$scope.deletion = {}; |
2 |
|
3 |
$scope.confirmDelete = function(id, tag) { |
4 |
$scope.deletion.id = id; |
5 |
$scope.deletion.tag = tag; |
6 |
$('#deleteModal').modal('show'); |
7 |
}
|
Guarde los cambios y reinicie el servidor. Inicie sesión en la aplicación y, cuando se encuentre en la página de inicio del usuario, haga clic en el botón Eliminar Delete y podrá ver la ventana emergente de confirmación de eliminación.



A continuación, definiremos una función más para llevar a cabo la eliminación de la tarea. Ya hemos adjuntado una función llamada deleteTask
al botón Eliminar utilizando la directiva ngClick
. Ahora, definamos la función deleteTask
dentro de userHome.js
.
De
forma similar a la función de actualización, llamar a la solicitud de
eliminación en la API de Eve requiere que la ID de etiqueta TAG ID
se
establezca en el encabezado. Entonces, primero configure los encabezados requeridos como se muestra:
1 |
$http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"}; |
2 |
$http.defaults.headers.common = {"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept"}; |
3 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
4 |
$http.defaults.headers.common.Pragma = "no-cache"; |
5 |
$http.defaults.headers.common['Authorization'] = 'Basic '+auth; |
6 |
$http.defaults.headers.common['If-Match'] = $scope.deletion.tag; |
A continuación, realizaremos una solicitud DELETE a la API REST http://127.0.0.1:5000/item/(itemId).
1 |
$http({ |
2 |
method: 'DELETE', |
3 |
cache: false, |
4 |
url: 'http://127.0.0.1:5000/item/' + $scope.deletion.id |
5 |
}).
|
6 |
success(function(data, status, headers, config) { |
7 |
$('#deleteModal').modal('hide'); |
8 |
getAllTask(); |
9 |
}).
|
10 |
error(function(data, status, headers, config) { |
11 |
console.log(data, status); |
12 |
});
|
Como
se ve en el código anterior, en la devolución de llamada de solicitud
DELETE exitosa, ocultaremos la ventana emergente modal de confirmación
de eliminación y volveremos a cargar las entradas llamando al método
getAllTask
. Aquí está la función deleteTask
completa:
1 |
$scope.deleteTask = function() { |
2 |
$http.defaults.headers.common = { |
3 |
"Access-Control-Request-Headers": "accept, origin, authorization" |
4 |
};
|
5 |
$http.defaults.headers.common = { |
6 |
"Access-Control-Expose-Headers": "Origin, X-Requested-With, Content-Type, Accept" |
7 |
};
|
8 |
$http.defaults.headers.common["Cache-Control"] = "no-cache"; |
9 |
$http.defaults.headers.common.Pragma = "no-cache"; |
10 |
$http.defaults.headers.common['Authorization'] = 'Basic ' + auth; |
11 |
$http.defaults.headers.common['If-Match'] = $scope.deletion.tag; |
12 |
|
13 |
$http({ |
14 |
method: 'DELETE', |
15 |
cache: false, |
16 |
url: 'http://127.0.0.1:5000/item/' + $scope.deletion.id |
17 |
}).
|
18 |
success(function(data, status, headers, config) { |
19 |
$('#deleteModal').modal('hide'); |
20 |
getAllTask(); |
21 |
}).
|
22 |
error(function(data, status, headers, config) { |
23 |
console.log(data, status); |
24 |
});
|
25 |
}
|
Guarde los cambios anteriores y reinicie el servidor. Apunte su navegador a http://localhost:3000 e inicie sesión. Cuando esté en la página de inicio del usuario, haga clic en el botón Eliminar Delete para eliminar algunas tareas y debería estar funcionando.
Conclusión
En esta parte de la serie, vimos cómo usar las API REST de Python Eve creadas en la primera parte de la serie en una aplicación AngularJS. Implementamos algunas operaciones CRUD simples desde nuestra aplicación AngularJS utilizando las API de Eve REST. Espero que este tutorial sirva como base para crear algo increíble.
Siéntase libre de publicar sus comentarios, correcciones o preguntas a continuación. Si encontraste útil este tutorial, visita mi página de instructor para ver otros tutoriales.
El código fuente de este tutorial está disponible en GitHub.