, opbygge et angularjs app drives af python - del 2,,,,, 18,,,,,,,,, 8,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i den tidligere del af denne serie, vi gennemførte det tegn og underskrive op proces med eve api - vi har skabt i den første del af den serie.vi plejede node.js og angularjs til at skabe og få vores app.,, i denne forelæsning, tager vi vores app udvikling til næste niveau ved hjælp af det, tilføje, redigere og slette, api - grænseflader for at skabe produkter i brugeren hjemmeside.,, begyndt at komme i gang, klone kildekode af tidligere lektion fra github., så klon https: //////////////////////github. kom jay3dec angulareveapp_part1. ud, når det er klaret, sejle til , angulareveapp_part1, og installere den afhængighed, new public management installere bower installere, sørge for, at den pyton eve resten apis løber.start app - server.,, node app. js, punkt din browser på http: //localhost: 3000 , og du burde have anvendelse.,, at brugerens hjem, efter at brugeren tegn på succes, vi tager ud til siden.så lad os begynde med at skabe, userhome. html.sejle til offentlige, servietter og skabe en ny mappe, userhome,.indenfor, userhome, skabe filer, userhome.html, og userhome. js,.Open ,userHome.html, and add the following HTML code:,,<div class="container"> <div class="header"> <nav> <ul class="nav nav-pills pull-right"> <li role="presentation" class="active"><a href="#userHome">Home</a></li> <li role="presentation"><a href="#addItem">Add</a></li> <li role="presentation"><a href="#">Logout</a></li> </ul> </nav> <h3 class="text-muted">Home</h3> </div> <h1>Data will be displayed here !!</h1> <footer class="footer"> <p>© Company 2015</p> </footer> </div>,,Inside ,userHome.js, define the module ,userHome, and its template and controller. So, open ,userHome.js, and add the following code:,,'use strict'; angular.module('userHome', ['ngRoute']) .config(['$routeProvider', function($routeProvider) { $routeProvider.when('/userHome', { templateUrl: '../userHome/userHome.html', controller: 'UserHomeCtrl' }); }]) .controller('UserHomeCtrl', ['$scope', function($scope) { }]);,,Add a reference to ,userHome.js, in the ,index.html, page.,,<script src="userHome/userHome.js"></script>,,Inject the module ,userHome, i app, myapp i, indeks. js,.,, vinkel. - modul ('myapp "[" ngroute "," hjem "," signin "," userhome ']).ud (["$routeprovider, funktion ($routeprovider) ($routeprovider. ellers ((redirectto: » /home"})}]), i, signin fungerer, signin. js, om succes callback for $http, anmode om at omdirigere, /userhome, lyset. , $placering. vej (» /userhome), redde ovennævnte ændringer og genoptage node servere.punkt din browser på http: //localhost: 3000 og tegn på ved hjælp af en gyldig brugernavn og adgangskode.endnu en succes, undertegnet i, bør de være i stand til at se de bruger hjemmeside med misligholdelse synspunkt.,,,,, at tilføje opgave side, lad os tilføje, med henblik på at gøre det muligt for brugeren at tilføje punkter.sejle til , offentlige, servietter og skabe en mappe, additem,.i , additem, servietter, skabe to filer, additem.html, og additem. js,.Open ,addItem.html, and add the following HTML code:,,<div class="container"> <div class="header"> <nav> <ul class="nav nav-pills pull-right"> <li role="presentation"><a href="#userHome">Home</a></li> <li role="presentation" class="active"><a href="#addItem">Add</a></li> <li role="presentation"><a href="#">Logout</a></li> </ul> </nav> <h3 class="text-muted">Home</h3> </div> <div class="row"> <div class="col-md-8 col-sm-8 col-xs-8"> <input id="txtTitle" name="txtTitle" type="text" ng-model="title" placeholder="Enter Task" class="form-control input-md"> </div> <div class="col-md-4 col-sm-4 col-xs-4"> <input id="singlebutton" name="singlebutton" class="btn btn-primary" ng-click="addItem(title)" value="Add Task" /> </div> </div> <footer class="footer"> <p>© Company 2015</p> </footer> </div>,,Next, open ,addItem.js, and add the following code to define the route, template and controller.,,'use strict'; angular.module('addItem', ['ngRoute']) .config(['$routeProvider', function($routeProvider) { $routeProvider.when('/addItem', { templateurl: http: ////////////////additem... additem. "registeransvarlige:" additemctrl '}))]). controller ('additemctrl, [function() {}]), åbne, userhome.html, og ændre tilføje link, href at pege på den rette vej,.,, < li rolle = "fremstilling" > < en href = "# additem" > der tilsættes < /a > < /li >,, tilføje en henvisning til , additem.js, i , index.html,.,, < manuskript src = "additem /additem. er" > < /manuskript >,, at indsprøjte modul, additem i, myapp i, indeks. js,.,, vinkel. - modul ('myapp "[" ngroute "," hjem "," signin "," userhome "," additem']).ud (["$routeprovider, funktion ($routeprovider) ($routeprovider. ellers ((redirectto: » /home"})}]);,, medmindre følgende ændringer og genoptage node servere.når du har skrevet under, klik på tilføje, sammenhæng, og de bør være i stand til at se de tilføje punkt side.,,,,, tilføjelse af produkter med eve api, med henblik på at tilføje punkter, vi skal bruge, base64, authdata,.så gode tegn, vil vi holde brugernavn og alle data i en, angularjs, service.sejle til offentlige, servietter og skabe en folder til tjeneste.i , service, folder skabe filen, tjeneste. js,.lad os skabe en ny service, modul ringede , myappservice,.,, vinkel. - modul ('myappservice "[...]), tilføje en ny tjeneste til, myappservice, modul.,,. service ('commonprop, function() (}), i, commonprop, service, vil vi definere en for at få nogle funktioner og fastsætte, brugernavn, og authdata,.,,. service ('commonprop, function() {var bruger =", var userauth = "; tilbage (getuser: function() {tilbage bruger;}, setuser: funktion (værdi) (user = værdi), getuserauth: function() {tilbage userauth;}, setuserauth: funktion (værdi) (userauth = værdi;}}}), indeholde en henvisning til denne tjeneste i ,index.html,.,,<script src="service/service.js"></script>,,Next, inject the above created ,myAppService, module in the ,signin, module.,,angular.module('signin', ['base64','ngRoute','myAppService']),,Inject the required ,CommonProp, service in the ,SignInCtrl, controller.,,.controller('SignInCtrl',['$scope','$http','$base64','$window','$location','CommonProp',function($scope,$http,$base64,$window,$location,CommonProp),,On ,$http, success callback, add the following code to keep the username and authData in the service. ,,CommonProp.setUser(username); CommonProp.setUserAuth(authdata);,,Next, open up ,addItem.js, and inject the ,myAppService, module.,,angular.module('addItem', ['ngRoute','myAppService']),,Inject the ,CommonProp, service in the ,AddItemCtrl,.,,.controller('AddItemCtrl', ['$scope','CommonProp','$http','$location',function($scope,CommonProp,$http,$location),,Open up ,addItem.html, and add the ,ngModel, and ,ngClick, directive to the task text box and Add task button respectively.,,<div class="col-md-8 col-sm-8 col-xs-8"> <input id="txtTitle" name="txtTitle" type="text" ng-model="title" placeholder="Enter Task" class="form-control input-md"> </div> <div class="col-md-4 col-sm-4 col-xs-4"> <input id="singlebutton" name="singlebutton" class="btn btn-primary" ng-click="addItem(title)" value="Add Task" /> </div>,,Inside ,addItem.js, define a new function called ,addItem,.,,$scope.addItem = function(title){ //add punkt logik vil blive her!}, indenfor, additem, funktion, lad os gøre vores $http, ring til pyton eve resten api - grænseflade.vi bliver nødt til at få brugernavn og bruger alle data fra tjenesten.,, var) = commonprop. getuserauth(); var bruger = commonprop. getuser();,, lad os sætte de nødvendige rør til api.,, $http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"}; $http. misligholdelse. rør. fælles ["cache kontrol"] = "ingen cache". $http.defaults.headers.common.pragma = "ingen cache" $http. misligholdelse. rør. fælles ['authorization '] = "grundlæggende" +);,, når personer er blevet fastsat, lad os bruge $http, at api til at tilføje dette punkt. $http ((metode: "post", cache: falsk,url: http: ///////////////127.0.0.1:5000 post ", data: {navn: afsnit brugernavn: bruger}}).succes (funktion (data, status, rør, ud) ($placering. vej (» /userhome)}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)}), redde de ændringer og genoptage node servere.punkt din browser til http: //localhost: 3000 og tegn.klik, tilføje, link, ind i en opgave og klik, tilføje opgave.den vellykkede api - ringer, bør omfordeles til brugeren hjemmeside.,, få opgaver fra eve api,, når brugeren hjemmeside er ladt, får vi en grænseflade til at hente poster tilføjet ved særlig bruger.for at gøre de api - kalder vi skal bruge, brugernavn, og, authdata,.- injicer , myappservice, modul i, userhome, modul.,, vinkel. - modul ('userhome, ['ngroute,'myappservice ']), sprøjt, commonprop, service til , userhomectrl,.,,. controller ('userhomectrl "[" $anvendelsesområde,'commonprop "," $http', '$placering, funktion ($anvendelsesområde, commonprop $http, $beliggenhed), lad os hente, brugernavn, og , authdata, fra , commonprop,.,, var) = commonprop. getuserauth(); var bruger = commonprop. getuser(),,, den krævede rør til api.,, $http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"}; $http. misligholdelse. rør. fælles ["cache control "] =" ingen cache ". $http.defaults.headers.common.pragma =" ingen cache "$http. misligholdelse. rør. fælles ['authorization '] =" grundlæggende "+);,, for at få de opgaver, der er skabt af en bestemt bruger, vil vi få en $http få anmodning til http: ////////127.0.0.1:5000 /post?hvor = {"brugernavn": "+ bruger +"}.,, $http ((metode: "gå", cache: falske, url: http: ///////////////127.0.0.1:5000 på?hvor = {"brugernavn": "+ bruger +"} '}).succes (funktion (data, status, rør, ud) (konsol. log (data)}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)}), om vellykkede api - ring, vi vil analysere de returnerede data og oplysninger i en $anvendelsesområde, variabel. , lad os skabe en opgaver variabel:,, $scope.tasks = [], lad os analysere de oplysninger, der indberettes og fylde, opgaver, variable.,, (var - jeg = 0. jeg < data. _items.length; jeg + +) ($anvendelsesområde. opgaver. tryk ((afsnit ": data. _items [i]. navn})}, i, userhome. html, vil vi iterate over opgaver variable og gøre de opgaver, ude for en bestemt bruger.vi vil gøre brug af den, ngrepeat, direktiv iterate over opgaver variabel.,, < div klasse = "gruppe" ng gentager = "opgave i opgaver" > < en href = "#" onclick = "returner falske" klasse = "liste gruppe punkt aktive" > < p - klassen = "liste gruppe punkt tekst" > {{opgave. afsnit) < /p > < /a > < /div >,, medmindre ovennævnte ændringer og genoptage den server.punkt din browser på http: //localhost: 3000 og tegn.gode tegn på, du skal være i stand til at se de opgaver, som tilføjes ved undertegnet i bruger.,,,,, redigering & at slette en opgave, post, redigering opgaver, lad os tilføje en klippe og slette knap til listen over opgaver i bruger hjemmeside, for at gøre det muligt for redigering og sletning af af opgaver.Open ,userHome.html, and add the following HTML code to the ,.list-group, div.,,<span class="pull-right"> <button class="btn btn-xs btn-info" ng-click="editTask(task.title,task.id,task.tag)" data-target="#editModal">EDIT</button> <button class="btn btn-xs btn-warning" ng-click="confirmDelete(task.id,task.tag)" data-target="#deleteModal" >DELETE</button> </span>,,We'll be using bootstrap modals to show the task to be edited, so include jQuery and Bootstrap in ,index.html,.,,<script src="https://code.jquery.com/jquery-2.0.1.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>,,Add the following HTML code to ,userHome.html, for modal pop-up for edit.,,<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span> </button> <h4 class="modal-title" id="editModalLabel">Update Task</h4> </div> <div class="modal-body"> <form role="form"> <div class="form-group"> <label for="recipient-name" class="control-label">Title:</label> <input type="text" class="form-control" ng-model="edit.task" id="recipient-name"> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary" ng-click="update()">Update</button> </div> </div> </div> </div>,,Next open up ,userHome.js, and create a new function called ,editTask, der vil være gældende på edit knap klik. $scope.edit = {}; $scope.edittask = funktion (afsnit, id - mærke) ($scope.edit.task = afsnit $scope.edit.id = id. $scope.edit.tag = mærke; $('# editmodal). modal ('show')), som i ovennævnte kode, vi har fået , titel, id, og et af de særlige referat til $scope.edit.task, variabel.hvis brugeren vælger at ajourføre de særlige resultater, så vil vi bruge $scope.edit, data til ajourføring. , redde alle ovennævnte ændringer og genoptage den server.når undertegnet i med succes, klik på edit knap til at redigere en opgave, og du burde have modal pop - up.,,,,, tidligere, gjorde vi en $http, efter anmodning fra den, userhomectrl,.lad os lave det om til en korrekt funktion, da vi er nødt til at kalde det i fremtiden.her er , getalltask,.,, var getalltask = function() ($scope.tasks = [] $http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"} og $http. misligholdelse. rør. fælles ["cache kontrol"] = "ingen cache". $http.defaults.headers.common.pragma = "ingen cache" $http. misligholdelse. rør. fælles ['authorization '] = "grundlæggende" +); $http ((metode: "gå", cache: falske, url: http: ///////////////127.0.0.1:5000 på?hvor = {"brugernavn": "+ bruger +"} '}).succes (funktion (data, status, rør, ud) (for (var - jeg = 0. jeg < data. _items. længde; jeg + +) ($anvendelsesområde. opgaver. tryk (('title ": data. _items [i]. navn,'id": data. _items [i]. _id,'tag ": data. _items [i]. _etag})}}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)})} getalltask();,, skabe en funktion, ajourføre, i userhome.js, som vi kalder at ajourføre de redigerede opgave.i opdateringen funktion, vil vi lave en stil, anmodning om at http: //////////////////////127.0.0.1:5000 post (punkt id) med data ajourføres.tærsklen api - forventer en, et id - kort, header skal anvendes, når en anmodning, så vil vi også være, at et id på anmodning header.i opdateringen funktion, først skal vi erklære den nødvendige rør til $http, anmodning. $http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"}; $http. misligholdelse. rør. fælles ["cache kontrol"] = "ingen cache". $http.defaults.headers.common.pragma = "ingen cache" $http. misligholdelse. rør. fælles ['authorization '] = "grundlæggende" +); $http. misligholdelse. rør. fælles ['if-match'] = $anvendelsesområde. edit. tag;,, når personer er blevet defineret, vil vi gøre, stil, $http anmodning. $http ((metode: "stil", cache: falske, url: http: //////////////////////127.0.0.1:5000 på + $scope.edit.id, data: {navn: $scope.edit.task}}).succes (funktion (data, status, rør, ud) ($('# editmodal). modal (gem); getalltask().}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)}), som det fremgår af ovenstående kode på succesfuld opdatering , vi har lukket redigeringen modal og ladt alle opgaverne i forbindelse med de særlige bruger.,, at redde alle de ændringer og genoptage serveren.punkt din browser på http: //localhost: 3000 og underskriver med gyldige papirer.når undertegnet i, prøv at redigere en særlig opgave ved at trykke på knappen, redigere., slette opgaver, før at slette en opgave, som vi er nødt til at vise en bekræftelse af pop - up.så i, userhome.html, tilføje følgende: kode for slette bekræftelse pop - up.,, < div klasse = "modal" "id =" deletemodal "tabindex =" - 1 "rolle =" dialog "aria labelledby =" deletemodallabel "aria skjult =" ægte "> < div. klasse =" modal dialog "> < div klasse =" modal indhold "> < div klasse =" modal overskrift "stil =" tekst tilpasse: center; "> < h4 klasse =" modal titel "stil =" farve: rød; "id =" deletemodallabel "> du er ved at slette denne opgave!! < /h4 > < /div > < div klasse = "modal fod" > < knap type = "knap" klasse = "btn btn default" data afskedige = "af" > aflyse < /knap > < knap type = "knap" klasse = "btn btn primære" ng klik = "deletetask()" > slette < /knap > < /div > < /div > < /div > < /div >, næste, er vi nødt til at fastlægge en funktion, confirmdelete, som vi allerede har knyttet til sletknappen ved hjælp af , ngclick direktiv.i, confirmdelete, funktion, vi vil holde den opgave, id - mærke, som vil være nødvendige, når vi kalder slette api - grænseflade.her er den, confirmdelete, funktion:,, $scope.deletion = {}; $scope.confirmdelete = funktion (id - mærke) ($scope.deletion.id = id. $scope.deletion.tag = mærke; $('# deletemodal). modal ('show)), medmindre de ændringer og genoptage den server.tegn i ansøgningen, og når brugeren hjemmeside, klik, slette, knap, - - og du skal være i stand til at slette en bekræftelse på sig.,,,,, næste, vi skal definere en opgave at udføre den opgave, sletning.vi har allerede lagt en funktion, deletetask, sletknappen med, ngclick, direktiv.lad os nu definere, deletetask, funktion indenfor, userhome. js,.,, der svarer til opdateringen funktion, at slette anmodning om eve api kræver, et id - kort, der fastsættes i hovedet.- første sæt de nødvendige personer som vist:,, $http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"}; $http. misligholdelse. rør. fælles - "samling"] = "ingen cache". $http.defaults.headers.common.pragma = "ingen cache" $http. misligholdelse. rør. fælles ['authorization '] = "grundlæggende" +); $http. misligholdelse. rør. fælles ['if-match'] = $anvendelsesområde. sletning. tag;,, vi vil en slette anmodning til resten api - http: //////////////////////(punkt 127.0.0.1:5000 itemid). , $http ((metode: "slette, cache: falske, url: http: //////////////////////127.0.0.1:5000 på + $scope.deletion.id}).succes (funktion (data, status, rør, ud) ($('# deletemodal). modal (gem); getalltask().}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)}), som det fremgår af ovenstående kode på vellykket slette anmodning bør vi gemmer de slette bekræfte modal pop - up og lade den opgave angivelser ved at , getalltask metode.her er fuld, deletetask, funktion:,, $scope.deletetask = function() ($http.defaults.headers.common = {"adgangskontrol anmodning personer": "acceptere, oprindelse, tilladelse"}; $http.defaults.headers.common = {"adgangskontrol afsløre personer": "oprindelse, x-requested-with, content type, acceptere"}; $http. misligholder sine forpligtelser. rør. fælles ["cache kontrol"] = "ingen cache". $http.defaults.headers.common.pragma = "ingen cache" $http. misligholdelse. rør. fælles ['authorization '] = "grundlæggende" +); $http. misligholdelse. rør. fælles ['if-match'] = $scope.deletion.tag. $http ((metode: "slette, cache: falske, url: http: //////////////////////127.0.0.1:5000 på + $scope.deletion.id}).succes (funktion (data, status, rør, ud) ($('# deletemodal). modal (gem); getalltask().}).- fejl (funktion (data, status, rør, ud) (konsol. log (data, status)})), medmindre ovennævnte ændringer og genoptage den server.punkt din browser på http: //localhost: 3000 og tegn.når brugeren hjemmeside, tryk, slette, knap til at slette nogle opgaver, og det skal virke.,, konklusion i denne del af den række, så vi, hvordan man bruger den pyton eve resten apis, der er skabt i den første del af den række er en angularjs anvendelse.vi har gennemført nogle simple lort operationer fra vores angularjs anvendelse ved hjælp af eve resten api - grænseflader.jeg håber, at denne forelæsning vil tjene som grundlag for at skabe noget fantastisk.,, kan efter deres bemærkninger, korrektioner eller spørgsmål nedenfor.hvis du fandt denne forelæsning hjælpsom, må besøge min instruktør side for andre tutorials.,, kildekode fra denne lektion er tilgængelig på github. ,
bygge en angularjs app drives af python - del 2
Previous:angularjs for test
Next Page:ecmascript 6 magt tutor: klasse og arv