角度指令属性。$观察

ttmt

我在网上找到了这个Angular Directive,以添加一个Twitter分享按钮。一切似乎都是朝前走,但我无法弄清楚它们的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>
埃雷克斯

简而言之:

每当“ shareTwitterUrl”或“ shareTwitterText”更改时,它将调用共享功能。

从另一个stackoverflow答案:https://stackoverflow.com/a/14907826/2874153

$ observe()是Attributes对象上的一种方法,因此,它只能用于观察/监视DOM属性的值更改。仅用于/调用内部指令。当需要观察/观察包含插值的DOM属性(即{{}})时,请使用$ observe。例如,attr1 =“ Name:{{name}}”,然后在伪指令中:attrs。$ observe('attr1',...)。(如果尝试使用scope。$ watch(attrs.attr1,...),则由于{{}}而无法正常工作-您将无法定义。)将$ watch用于其他所有内容。

从Angular文档中:http://docs.angularjs.org/api/ng/type/$compile.directive.Attributes

$ compile.directive.Attributes#$ observe(key,fn);

观察插值属性。

在下一次$ digest之后的编译过程中,观察者函数将被调用一次。每当插值更改时,便调用观察者。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

$观察指令的对象属性

来自分类Dev

角度属性指令值

来自分类Dev

Angular JS观察指令属性

来自分类Dev

角度指令-元素还是属性?

来自分类Dev

角度指令-元素还是属性?

来自分类Dev

可观察的角度容器@input 属性

来自分类Dev

绑定属性在角度指令中为空

来自分类Dev

基于属性的角度指令模板变量

来自分类Dev

在指令属性上禁用角度修剪

来自分类Dev

角度指令输入的动态属性绑定

来自分类Dev

如何动态更新角度指令属性?

来自分类Dev

使用角度指令更改属性的值

来自分类Dev

观察时AngularJS指令属性未呈现值

来自分类Dev

角度指令

来自分类Dev

角度指令

来自分类Dev

如何将元素的属性添加到角度指令

来自分类Dev

角度形式:在自定义指令上设置$ dirty属性

来自分类Dev

角度指令解释属性为字符串

来自分类Dev

获取角度指令属性值将返回“未定义”

来自分类Dev

当replace = true时如何防止角度指令中的属性重复

来自分类Dev

从指令动态将角度属性添加到元素

来自分类Dev

角度js指令属性和控制器范围

来自分类Dev

如何将方法传递给角度属性指令?

来自分类Dev

标签的属性在角度指令中不起作用?

来自分类Dev

如何将元素的属性添加到角度指令

来自分类Dev

角度js指令属性和控制器范围

来自分类Dev

如何在角度指令属性中使用特殊字符?

来自分类Dev

为角度指令属性设置默认值

来自分类Dev

使用角度范围指令变量内容本身作为属性