


Wie bestimmt AngularJS, ob das Rendern abgeschlossen ist? Was passiert mit dem $httpprovider-Dienst?
Dieser Artikel ist eine Anmerkung zu angularjs Manchmal habe ich für einige Probleme eine Lösung gefunden, aber jetzt habe ich sie vergessen und muss die Informationen noch einmal nachschlagen Jetzt als Hinweis. Nein, das sind alles die richtigen Methoden. Schauen wir uns sie jetzt an
fromJson- und toJson-Methoden
angular.fromJson()Die Methode besteht darin, JSON in ein Objekt oder Array von Objekten zu konvertieren. Der Quellcode lautet wie folgt:
function fromJson(json) { return isString(json) ? JSON.parse(json) : json }
angular.toJson()Die Methode besteht darin, ein Objekt oder Array zu konvertieren in json. Der Quellcode lautet wie folgt:
function toJson(obj, pretty) { return "undefined" == typeof obj ? undefined : JSON.stringify(obj, toJsonReplacer, pretty ? " " : null) }
promise
Das Promise von Angular wird von $q bereitgestellt und erstellt, das eine Methode für die asynchrone Ausführung durch die Registrierung eines Promise-Projekts bereitstellt.
Der Umgang mit asynchronen Rückrufen in JS ist immer sehr mühsam und kompliziert:
// 案例1:在前一个动画执行完成后,紧接着执行下一个动画 $('xx').animate({xxxx}, function(){ $('xx').animate({xx},function(){ //do something },1000) },1000)
// 案例2:jquery ajax 异步请求 $.get('url').then(function () { $.post('url1').then(function () { //do something }); });
Promise hilft Entwicklern, dem Abgrund tief verschachtelter asynchroner Rückruffunktionen zu entkommen. Angularjs stellt Versprechen über den $q-Dienst bereit und erstellt sie. Der vollständigste Fall:
var defer1 = $q.defer(); function fun() { var deferred = $q.defer(); $timeout(function () { deferred.notify("notify"); if (iWantResolve) { deferred.resolve("resolved"); } else { deferred.reject("reject"); } }, 500); return deferred.promise; } $q.when(fun()) .then(function(success){ console.log("success"); console.log(success); },function(err){ console.log("error"); console.log(err); },function(notify){ console.log("notify"); console.log(notify); }) .catch(function(reson){ console.log("catch"); console.log(reson); }) .finally(function(final){ console.log('finally'); console.log(final); });
Promise-Aufruf: $q.when(fun()).then(successCallback, errorCallback, notifyCallback);
abgekürzt als: fun().then(successCallback, errorCallback, notifyCallback);
AngularJS-Dienstkapselungsverwendung:
angular.module("MyService", []) .factory('githubService', ["$q", "$http", function($q, $http){ var getPullRequests = function(){ var deferred = $q.defer(); var promise = deferred.promise; $http.get("url") .success(function(data){ var result = []; for(var i = 0; i < data.length; i++){ result.push(data[i].user); deferred.notify(data[i].user); // 执行状态改变通知 } deferred.resolve(result); // 成功解决(resolve)了其派生的promise。参数value将来会被用作successCallback(success){}函数的参数value。 }) .error(function(error){ deferred.reject(error); // 未成功解决其派生的promise。参数reason被用来说明未成功的原因。此时deferred实例的promise对象将会捕获一个任务未成功执行的错误,promise.catch(errorCallback(reason){...})。 }); return promise; } return { getPullRequests: getPullRequests }; }]); angular.module("MyController", []) .controller("IndexController", ["$scope", "githubService", function($scope, githubService){ $scope.name = "dreamapple"; $scope.show = true; githubService.getPullRequests().then(function(result){ $scope.data = result; },function(error){ },function(progress){ // 执行状态通知 notifyCallback }); }]);
$http, $httpProvider-Dienst
https://docs.angularjs.org/ap...$http
https://www.cnblogs.com/keatk...
$http ist das Angular-Paket für Gute XMLHttpRequest-Anfragen, das Denken von Angular tendiert zu erholsamen Konzepten. Die Methoden sind: GET, POST, PUT, DELTE, PATCH, HEAD usw.
Angulars Standard-Anfrageheader:
Accept : application/json, text/plain akzeptieren JSON und Text
Content-Type: application/json
Wenn Sie die Standardeinstellungen ändern möchten, können Sie sie in app.config ändern
var app = angular.module("app", []); app.config(function ($httpProvider) { log(angular.toJson($httpProvider.defaults)); $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; $httpProvider.defaults.headers.put["Content-Type"] = "application/x-www-form-urlencoded"; $httpProvider.defaults.headers.patch["Content-Type"] = "application/x-www-form-urlencoded"; });
Wie Solange es sich um die Standard-Header handelt, werden sie bei jeder gesendeten Anfrage angezeigt. Wenn wir also für jede Anfrage einige benutzerdefinierte Header verwenden, können wir diese auch in default.headers schreiben. $httpProvider.defaults.headers.common["myHeader"] = "myheaderValue";//common 表示不管任何的 method POST,GET,PUT等
Diese Standardheader können bei jeder Anfrage durch Parameter überschrieben werden. Darüber hinaus stellt der $http-Dienst auch einen Zeiger auf Standardwerte bereit (Hinweis: $httpProvider.defaults === $http.defaults )
$httpProvider.defaults.transformRequest & transformResponse
Dies sind die beiden Schnittstellen, die uns Angular zur Verfügung stellt, bevor die Anfrage gesendet wird und die Antwort noch nicht vorliegt Auslösen des Rückrufs, Verarbeitung der Post- und Antwortdaten. Sie sind vom Array-Typ. Wir können einige Funktionen in sie einfügen (Angular-Standardwerte für eine Methode sowohl für die Anfrage als auch für die Antwort). Wenn die Daten beim Posten ein Objekt sind, es wird jsonisiert. Wenn die Daten vom Typ json sind, werden sie in ein Objekt geparst. Bei jeder Anfrage können wir weiterhin das gesamte Array überschreiben. (Wenn Sie mehr erfahren möchten, besuchen Sie die chinesische PHP-Website AngularJS Development Manual , um mehr zu erfahren)
var app = angular.module("app", []); app.config(function ($httpProvider) { $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; $httpProvider.defaults.transformRequest.shift(); //把angular default的去掉 $httpProvider.defaults.transformRequest.push(function (postData) { //这个function不是依赖注入哦 if (angular.isObject(postData)) { return $.param(postData); //如果postData是对象就把它转成param string 返回, 这里借用了jQuery方法 } return postData; }); $httpProvider.defaults.transformResponse.push(function (responseData) { log(angular.toJson(responseData)); //响应的数据可以做一些处理 return "data"; }); }); app.controller("ctrl", function ($scope, $http) { $http({ method: "POST", url: "handle.ashx", data: { key: "value" }, transformResponse: [], //每一次请求也可以覆盖default transformResponse: $http.defaults.transformResponse.concat([function () { return "abc" }]) //如果default要保留要concat }).success(function (responseData) { log(responseData === "abc"); //true }); });
$httpProvider.defaults.cache. Der Standardwert von Angular ist cahce = false. Sie können jede Anforderung auch über Standardeinstellungen festlegen. Wir können Einstellungen auch auf Anfragebasis überschreiben. Wenn zwei Anfragen ohne Cache gleichzeitig gesendet werden, kann Angular dies auch verarbeiten und sendet sie nur einmal.
var app = angular.module("app", []); app.config(function ($httpProvider) { $httpProvider.defaults.cache = true; }); app.controller("ctrl", function ($scope, $http) { //并发但是只会发送一个请求 $http.get("handle.ashx"); $http.get("handle.ashx"); //我们可以为每次请求要不要使用缓存或者缓存数据 $http({ url: "handle.ashx", method: "GET", cahce: true }); $http({ url: "handle.ashx", method: "GET", cache : false //强制不使用缓存,即使已存在 }); });
$httpProvider.interceptors
(Interceptors bedeutet auf Chinesisch Abfangen). Zusätzlich zu der zuvor eingeführten Transformation, die einige Datenverarbeitungen durchführen kann, bietet Angular auch vier weitere Momente, nämlich onRequest, onRequestFail, onResponse und onResponseFail. Führen wir eine externe Verarbeitung durch. Wenn unser Server beispielsweise 500 zurückgibt, möchten wir möglicherweise eine allgemeine Warnung ausgeben oder die Konfiguration automatisch anpassen, bevor die Anfrage fehlschlägt usw.
//interceptors是数组,放入的是可以依赖注入的方法哦! $httpProvider.interceptors.push(["$q", function ($q) { return { request: function (config) { //config = {method, postData, url, headers} 等 return config; //返回一个新的config,可以做一些统一的验证或者调整等. }, requestError: function (rejection) { return $q.reject(rejection); //必须返回一个promise对象 }, response: function (response) { return response; //这里也可以返回 promise, 甚至是把它给 $q.reject掉 }, responseError: function (rejection) { //rejection = { config, data, status, statusText, headers } return $q.reject(rejection); //必须返回一个promise对象 } }; }]);
Okay, dieser Artikel endet hier (wenn Sie mehr sehen möchten, besuchen Sie die chinesische PHP-Website AngularJS-BenutzerhandbuchStudium in der Mittelschule), wenn Sie Fragen haben, können Sie unten eine Nachricht hinterlassen. Das obige ist der detaillierte Inhalt vonWie bestimmt AngularJS, ob das Rendern abgeschlossen ist? Was passiert mit dem $httpprovider-Dienst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!transform 的执行次序是这样的 interceptors.request -> transformRequest -> transformResponse -> interceptors.response
Beurteilen Sie, ob die Ansicht gerendert wird
// 指令
app.directive('eventNgRepeatDone', function ($timeout) {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last) {
// $timeout(function () {
scope.$emit('eventNgRepeatDone');
if ($attrs.ngRepeatDone) {
$scope.$apply(function () {
$scope.$eval($attrs.ngRepeatDone);
});
}
//});
}
}
}
});
<!-- 使用 -->
<p ng-repeat = "item in list track by $index" event-ng-repeat-done>{{item.name}}</p>
app.controller('myCtrl', ['$scope', function ($scope) {
$scope.$on ('eventNgRepeatDone', function () {
// doSomething
});
});

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Javascript ist eine sehr einzigartige Sprache, was die Organisation des Codes, das Programmierparadigma des Codes und die objektorientierte Theorie betrifft. Die Frage, ob Javascript eine objektorientierte Sprache ist, wird seit langem diskutiert Es gibt offensichtlich schon seit langem eine Antwort. Auch wenn Javascript seit zwanzig Jahren vorherrscht, schauen Sie sich einfach das „Black Horse Cloud Classroom JavaScript Advanced Framework“ an, wenn Sie beliebte Frameworks wie jQuery, Angularjs und sogar React verstehen möchten Design-Video-Tutorial“.

Im heutigen Informationszeitalter sind Websites zu einem wichtigen Instrument für Menschen geworden, um Informationen zu erhalten und zu kommunizieren. Eine responsive Website kann sich an verschiedene Geräte anpassen und den Benutzern ein qualitativ hochwertiges Erlebnis bieten, was zu einem Hotspot in der modernen Website-Entwicklung geworden ist. In diesem Artikel erfahren Sie, wie Sie mit PHP und AngularJS eine responsive Website erstellen, um ein qualitativ hochwertiges Benutzererlebnis zu bieten. Einführung in PHP PHP ist eine serverseitige Open-Source-Programmiersprache, die sich ideal für die Webentwicklung eignet. PHP bietet viele Vorteile, z. B. einfache Erlernbarkeit, plattformübergreifende Funktionalität, umfangreiche Toolbibliothek und Entwicklungseffizienz

Mit der kontinuierlichen Entwicklung des Internets sind Webanwendungen zu einem wichtigen Bestandteil des Informationsaufbaus in Unternehmen und zu einem notwendigen Mittel für Modernisierungsarbeiten geworden. Um die Entwicklung, Wartung und Erweiterung von Webanwendungen zu vereinfachen, müssen Entwickler ein technisches Framework und eine Programmiersprache wählen, die ihren Entwicklungsanforderungen entspricht. PHP und AngularJS sind zwei sehr beliebte Webentwicklungstechnologien. Sie sind serverseitige bzw. clientseitige Lösungen und können die Entwicklungseffizienz und das Benutzererlebnis von Webanwendungen erheblich verbessern. Vorteile von PHPPHP

Mit der rasanten Entwicklung der Webtechnologie ist die Single Page Web Application (SinglePage Application, SPA) zu einem immer beliebter werdenden Webanwendungsmodell geworden. Im Vergleich zu herkömmlichen mehrseitigen Webanwendungen besteht der größte Vorteil von SPA darin, dass die Benutzererfahrung reibungsloser ist und auch der Rechendruck auf dem Server erheblich reduziert wird. In diesem Artikel stellen wir vor, wie man mit Flask und AngularJS ein einfaches SPA erstellt. Flask ist ein leichter Py

Mit der Popularität von Webanwendungen erfreut sich das Frontend-Framework AngularJS immer größerer Beliebtheit. AngularJS ist ein von Google entwickeltes JavaScript-Framework, das Sie beim Erstellen von Webanwendungen mit dynamischen Webanwendungsfunktionen unterstützt. Andererseits ist PHP für die Backend-Programmierung eine sehr beliebte Programmiersprache. Wenn Sie PHP für die serverseitige Programmierung verwenden, bringt die Verwendung von PHP mit AngularJS dynamischere Effekte auf Ihre Website.

Mit der Popularität des Internets nutzen immer mehr Menschen das Netzwerk, um Dateien zu übertragen und zu teilen. Aus verschiedenen Gründen kann die Verwendung herkömmlicher FTP- und anderer Methoden zur Dateiverwaltung jedoch nicht den Anforderungen moderner Benutzer gerecht werden. Daher ist die Einrichtung einer benutzerfreundlichen, effizienten und sicheren Online-Dateiverwaltungsplattform zu einem Trend geworden. Die in diesem Artikel vorgestellte Online-Dateiverwaltungsplattform basiert auf PHP und AngularJS. Sie kann problemlos Dateien hochladen, herunterladen, bearbeiten, löschen und andere Vorgänge ausführen und bietet eine Reihe leistungsstarker Funktionen wie Dateifreigabe, Suche,

Der Inhalt dieses Artikels befasst sich mit der grundlegenden Einführung in AngularJS. Jetzt kann ich ihn mit Ihnen teilen.

Mit der Popularität und Entwicklung des Internets wird die Front-End-Entwicklung immer wichtiger. Als Frontend-Entwickler müssen wir verschiedene Entwicklungstools und -technologien verstehen und beherrschen. Unter ihnen sind PHP und AngularJS zwei sehr nützliche und beliebte Tools. In diesem Artikel erklären wir, wie Sie diese beiden Tools für die Frontend-Entwicklung verwenden. 1. Einführung in PHP PHP ist eine beliebte serverseitige Open-Source-Skriptsprache. Sie eignet sich für die Webentwicklung und kann auf Webservern und verschiedenen Betriebssystemen ausgeführt werden. Die Vorteile von PHP sind Einfachheit, Geschwindigkeit und Komfort
