Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从AngularJS指令访问属性_Angularjs_Angularjs Directive - Fatal编程技术网

从AngularJS指令访问属性

从AngularJS指令访问属性,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我的AngularJS模板包含一些自定义HTML语法,如: <su-label tooltip="{{field.su_documentation}}">{{field.su_name}}</su-label> AngularJS+stackoverflow=bliss参见指令文档中的部分 观察插值属性:使用$observe观察包含插值的属性的值变化(例如src=“{bar}”)。这不仅非常有效,而且也是容易获得实际值的唯一方法,因为在链接阶段,插值尚未计算,因此此时值

我的AngularJS模板包含一些自定义HTML语法,如:

<su-label tooltip="{{field.su_documentation}}">{{field.su_name}}</su-label>
AngularJS+stackoverflow=bliss

参见指令文档中的部分

观察插值属性:使用$observe观察包含插值的属性的值变化(例如src=“{bar}”)。这不仅非常有效,而且也是容易获得实际值的唯一方法,因为在链接阶段,插值尚未计算,因此此时值设置为未定义


虽然在特定场景中使用“@”比使用“=”更合适,但有时我会使用“=”,这样我就不必记得使用attrs了。$observe():

{{field.su_name}
指令:

myApp.directive('suLabel', function() {
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: {
            title: '=tooltip'
        },
        template: '<label><a href="#" rel="tooltip" title="{{title}}" data-placement="right" ng-transclude></a></label>',
        link: function(scope, element, attrs) {
            if (scope.title) {
                element.addClass('tooltip-title');
            }
        },
    }
});
myApp.directive('suLabel',function(){
返回{
限制:'E',
替换:正确,
是的,
范围:{
标题:'=工具提示'
},
模板:“”,
链接:函数(范围、元素、属性){
if(范围、标题){
元素addClass('tooltip-title');
}
},
}
});


使用“=”可以实现双向数据绑定,因此必须注意确保scope.title不会在指令中意外修改。优点是在链接阶段,定义了本地作用域属性(scope.title)。

这是另一个问题,解释了如何正确地用AngularJS表示三元。因此,“AngularJS+stackoverflow=bliss”URL现在改为Hey Mark,您对使用这些解决方案有何看法,对于使用链接属性上的观察与使用双向数据绑定,是否有具体的指导方针?我认为使用双向数据绑定看起来更干净,但我想知道是否有理由不使用它?@Jeroen,我发布了一篇关于使用
@
vs
=
的较长讨论。
link: function(scope, element, attrs) {
  attrs.$observe('tooltip', function(value) {
    if (value) {
      element.addClass('tooltip-title');
    }
  });
}
<su-label tooltip="field.su_documentation">{{field.su_name}}</su-label>
myApp.directive('suLabel', function() {
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: {
            title: '=tooltip'
        },
        template: '<label><a href="#" rel="tooltip" title="{{title}}" data-placement="right" ng-transclude></a></label>',
        link: function(scope, element, attrs) {
            if (scope.title) {
                element.addClass('tooltip-title');
            }
        },
    }
});