2015-11-11 34 views
0

我有一个角指令:Angular指令呈现HTML标记,我该如何阻止它?

<some-dir text="{{characterDescription}}"></some-dir> 


app.directive('someDir', function() { 

    "use strict"; 

    return { 
     restrict: 'E', 
     transclude: false, 
     // replace: true, 
     template: '<p></p>', 
     scope: { 
      text: '@' 
     }, 
     link: function(scope, elem) { 

      elem.append(scope.text); 
     } 
    }; 
}); 

被传递到它的文字是这样的:

{ 
    characterDescription : <b>tall</b> 
} 

目前,它的渲染HTML,所以我看到高大 ,但我希望它将HTML视为纯文本,所以我想看看<b>tall</b>

有没有在我的指令中完成这一点的角度方式?

+0

请看这里的示例:https://docs.angularjs.org/api/ngSanitize/service/$sanitize –

+2

您是否尝试过elem.text(scope.text)? 这不会将字符串解释为HTML,而是纯粹作为字符串。 http://api.jquery.com/text/#text2 – pcagica

+0

如果我理解你的问题,[这个答案](http://stackoverflow.com/questions/6817262/how-to-display-html-tags- as-plain-text)可能会有所帮助。 –

回答

2
elem.text(sometext) 

这不会将字符串解释为HTML,如您在文档中所看到的。 jQuery.text() Docs

+0

值得添加只是意识到你可以直接在模板中做,然后你利用angulars数据绑定。 'template:'

{{text}}

''请参阅小提琴:http://jsfiddle.net/1dL16fof/1/ – ste2425

+0

您是对的,还有其他选项,比如从元素中获取属性值,而不是将它传递给指令作用域。这只取决于他想要对指令做什么。 – pcagica