使用纯JS设置ng-Attributes

时间:2014-02-20 14:18:27

标签: javascript html css angularjs

我从很短的时间开始编码角度

我得到了几个div和类的HTML。我想要迭代的那些类,并为该类中的div分配工具提示。我不想将这些角度属性放入HTML中,因为我需要动态生成它以逃避HTML中的大量代码。

例如使用

button.setAttribute ("tooltip-placement", "bottom");

Angular忽略了这一点,并且展示位置是标准的:top。

如何“说服”角度来使用我自己对角度属性的处理?

谢谢!

以下操作DOM的指令不会带来令人反感的解决方案: 尽管它出现在DOM中(检查它),但角度忽略它。 它应该弹出一个工具提示。

demoApp.directive('tooltipView',function(){     返回{         限制:'EA',

    link: function (scope, element, attrs) {
        element.attr("tooltip-placement", scope.placement);
        element.attr("tooltip-html-unsafe", "testtooltip");
        element.attr("tooltip-trigger", "mouseover");
    }
};

})

2 个答案:

答案 0 :(得分:0)

我认为这一切都取决于何时生成工具提示。如果在执行button.setAttribute(..)代码之前运行工具提示代码,则无法获得预期的行为。

我的第一个建议是使用angular-bootstra's tooltip wrapper,并使用数据绑定角度来设置位置。

例如:

<... tooltip-placement="{{ scopePropertyIndicatingTooltipPlacement }}" ../>

使用您的控制器:

function MyCtrl($scope) {
    $scope.scopePropertyIndicatingTooltipPlacement = "right";
}

答案 1 :(得分:0)

处理元素属性更改的正确方法是在链接函数中编译它如下(示例):

app.directive("tooltipView", function($compile) {

return {
    restrict: "AE",
    link: function(scope, element, attrs) {                 
        var tooltipContent = scope.tooltipHTML;     
        if (!element.attr('tooltip-html-unsafe')) { 
            element.attr("tooltip-html-unsafe", tooltipContent);
            $compile(element[0])(scope);
        }
    });    
   }    
  };
});