Я нашел эту директиву Angular онлайн, чтобы добавить кнопку щебета. Все это кажется звездным, но я не могу понять, что делает attrs.$observe
.
Я просмотрел документы, но не могу видеть $observe
где-либо.
Похоже, что директива добавляет href
, который будет поступать с контроллера, чтобы кто-нибудь мог объяснить, что делает остальная часть кода?
module.directive('shareTwitter', ['$window', function($window) {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.share = function() {
var href = 'https://twitter.com/share';
$scope.url = attrs.shareUrl || $window.location.href;
$scope.text = attrs.shareText || false;
href += '?url=' + encodeURIComponent($scope.url);
if($scope.text) {
href += '&text=' + encodeURIComponent($scope.text);
}
element.attr('href', href);
}
$scope.share();
attrs.$observe('shareUrl', function() {
$scope.share();
});
attrs.$observe('shareText', function() {
$scope.share();
});
}
}
}]);
<a href="" target="_blank" share-twitter share-url="[[shareTwitterUrl]]" share-text="[[shareTwitterText]]">Twitter</a>