Was ist die Verwendung von angular.bind in Angularjs. Bitte geben Sie ein Beispiel an. Kann nicht verstehen von https://docs.angularjs.org/api/ng/function/angular.bindWas ist die Verwendung von angular.bind in angularjs? Wo kann ich es verwenden?
Antwort
Angular.bind ist eine Utility-Funktion, die Funktionalität in function.bind und partial function application kombiniert.
Bindung (im Allgemeinen) ist die Idee, dass Sie den aktuellen Kontext an eine Funktion binden möchten, aber zu einem späteren Zeitpunkt tatsächlich ausführen.
Dies kann in Winkel nützlich sein, wenn HTTP mit $http
und Handhabung verspricht Telefonieren:
$http.get('url').then(angular.bind(this,
function(response) {
this.response = response; //use this (which is the bound context)
});
In dem obigen Beispiel die this
innerhalb der Funktion würde nicht beziehen sich auf die this
im $http
Zusammenhang, es sei denn wir explizit bind
es. Dies ist ein häufiges JavaScript-Problem (in Rückrufen) aufgrund seiner dynamischen Bindung von Kontext (die im Gegensatz zu den meisten gängigen klassenorientierten Sprachen ist).
Teil Anwendung wird verwendet, wenn Sie eine Funktion machen möchten, die bereits einige seiner Argumente übergeben worden ist. Ein sehr einfaches Beispiel:
function add(x, y) {
return x + y;
}
var add10To = angular.bind(this, add, 10);
console.log(add10To(5));
// outputs 15
Mit Angular.bind wird der Winkel Team dieser beide gibt zusammen eingewickelt.
Ich habe verstanden, dass im ersten Beispiel der Verwendung der angular.bind() das "dies" sich auf "this" im $ http bezieht, aber im zweiten Beispiel habe ich nicht verstanden, worauf es sich bezieht (normalerweise sollte es beziehen sich auf den globalen Kontext, aber das wäre nicht nützlich und das "dies" ist vielleicht das add10To Objekt selbst. Können Sie es bestätigen? – Bardelman
@Bardelman Nicht genau. In der ersten 'this, es bezieht sich nicht auf $ http ', bezieht es sich auf den Funktionsumfang, in dem die Zeile' $ http.get ... 'enthalten ist (zum Beispiel der Controller). Und wieder bezieht sich das zweite' this 'auf den Kontext, in dem diese Anweisungen und Funktionen sind definiert. Wenn es keine Umbruchfunktion gibt, bezieht sich dies auf den globalen Kontext. –
In diesem Fall wäre das "Dies" als globaler Bereich nützlich für die Bindung, um eine Funktion analog zur Add-Funktion mit zu machen das x wurde als gleich 10? – Bardelman
Alle Daten in AngularJS soll eine Eigenschaft von $ Scope-Objekt sein. Das Framework verwaltet alle ng-clicks zum richtigen Scope-Objekt unter der Haube, ohne dass der Entwickler darüber nachdenkt. Innerhalb einer aufgerufenen Funktion, deutet dies auf das $ scope Objekt
<body ng-controller="MainCtrl">
<p ng-click="clickMe()">Click me</p>
</body>
when clicked the following controller function
app.controller('MainCtrl', function($scope) {
$scope.clickMe = function() {
console.log(this === $scope);
};
});
// prints true
function.bind
nicht oft innerhalb AngularJS Controller-Code verwendet wird: Funktionen, die nur $scope
Objekt verwenden, innerhalb der Controller-Funktion definiert werden, die den Zugriff auf Daten anstelle von Eigenschaften an Dies. Sogar Funktionen, die innerhalb der Verknüpfungsfunktion definiert sind, können direkt mit der Bereichsvariablen arbeiten.
Referenz: http://bahmutov.calepin.co/why-function-bind-matters-little-in-angularjs.html
Dies ist eine der klassischen Funktionen, auf denen funktionale Sprachen basieren. Es erlaubt uns, mit Teilfunktionen zu arbeiten. Beachten Sie, dass dies nicht winkelspezifisch ist, dies ist Javascript-spezifisch. Die meisten Utility-Bibliotheken für Javascript enthalten diese Funktion ebenfalls (z. B. Underscore/Lodash).
Heutzutage ist diese Funktion ein Teil von Javascript selbst (wird von allen gängigen Browsern unterstützt - siehe Which browsers support bind()?).
Um zu erklären, was bind
tut, ich zum Beispiel in Lodash Dokumentation beziehen (das Original _.bind
mit angular.bind
ersetzt und das Hinzufügen einiger Kommentare):
//this is a simple function. Note it uses "this" but it's not inside any object.
var greet = function (greeting, punctuation) {
return greeting + ' ' + this.user + punctuation;
};
//now let's define an object
var object = { 'user': 'fred' };
//now we can create a functions by "binding" the object with the function above and also supplying the "greeting" argument
var bound = angular.bind(object, greet, 'hi');
bound('!');
// → 'hi fred!'
Überprüfen Sie den folgenden Link, um weitere Erkenntnisse für die in dieser Frage http://learnkode.com/Examples/Angular/angular-bind
- 1. Was ist die Verwendung von $ index in angularjs?
- 2. Was ist die Verwendung von "??"
- 3. Wie kann ich die AngularJS-Hash-Option von $ q.all verwenden?
- 4. Was ist die Verwendung von while (1)?
- 5. was ist die Verwendung eines Dollar ($) Anmelden angularjs
- 6. Was ist die Verwendung von $ # in Bash
- 7. Wo kann ich DrawInRect für Strings verwenden?
- 8. Was ist generische Handler in asp.net und es ist Verwendung?
- 9. Was ist die Verwendung von Assert.Equals?
- 10. Was ist die Verwendung von AtomicReferenceArray?
- 11. Datenbank in AngularJS verwenden - wo sollte ich DB-Verbindungscode schreiben?
- 12. Was ist EGL und wie kann ich es verwenden?
- 13. Was ist die Verwendung von "System.out :: println" in Java 8
- 14. Was ist die Verwendung von javax.mail.Session?
- 15. Was ist die Verwendung von CADisplayLink iOS
- 16. Was ist die Verwendung von Javascript scrollTimeout?
- 17. Was ist die korrekte Verwendung von ConcurrentBag?
- 18. Was ist die Verwendung von eckigen Maske?
- 19. Was ist die Verwendung von .bind()
- 20. Was ist die Verwendung von Parbase-Komponente:
- 21. was ist die Verwendung von "-Wa, Optionen" in gcc
- 22. Was ist die Verwendung von string.Clone()?
- 23. Was ist parentValueWatch in AngularJS?
- 24. Was ist die Verwendung von 9Patch PNG?
- 25. Was ist die Verwendung von SingletonList?
- 26. Was ist die ordnungsgemäße Verwendung von EnsureChildControls()?
- 27. Was ist die Verwendung von mehreren Hauptmethoden?
- 28. Was ist die Verwendung von verschiedenen Ordner in SSIS-Lösung
- 29. Was ist $ scope in AngularJS?
- 30. Was die Verwendung von ::: (triple Doppelpunkte) in Scala ist
@GeorgeLee die beiden Fragen haben völlig anders. –