使用指令/ $ compile将HTML设置为属性

时间:2014-02-26 08:20:25

标签: javascript html angularjs compiler-directives

我模块的控制器有一个属性作为字符串,我在其中汇编HTML。

在一个指令中,我尝试将HTML字符串分配给工具提示的属性,即 “工具提示-HTML的不安全”。

我能够将整个元素分配给此tooltip-attribute。我怎样才能获得父范围的属性?

请参阅我的plunkr获取的代码: http://plnkr.co/edit/rTq8zrKdc3qABrc9Tde6?p=catalogue

2 个答案:

答案 0 :(得分:1)

两件事:

  1. 您需要更新$ scope.contentHTML的值(仅设置var值不更新$ scope值)。如果您只想从指令中读取该值,则可以使用scope.contentHTML在链接功能中访问该值。
  2. 如果您希望能够从指令设置父作用域的contentHTML属性,则可以在指令中使用scope属性并将值设置为“=”。然后,您可以在链接功能中从scope访问它。例如:

    app.directive("tooltipView", function($compile) {   
        return {
            restrict: "AE", 
            scope: {
                tooltipView: "="
            },
            link: function(scope, element, attrs) {
                 console.log(scope.tooltipView);
            }
        };
    });
    
  3. 如果您打算在指令(上面的数字2)中使用范围的"="符号值,您还需要告诉您的指令在HTML中映射到哪个范围值。所以: <p tooltip-view="contentHTML">Hello {{name}}!</p>会将链接函数中的scope.tooltipView映射到控制器中的$ scope.contentHTML。

    请参阅基于你的plunkr:http://plnkr.co/edit/HskBFNRW8mC8QmVWr3hP

答案 1 :(得分:0)

要从当前的范围访问父范围,您可以执行以下操作:

scope.$parent.someValue