2014-10-17 49 views
0

首先:我绝对是AngularJS的新手,但是使用其他语言的MVC项目。在AngularJS中包含HTML的绑定控制器属性

我尝试绑定一个包含HTML的Property。

这是代码:

HTML:

<div ng-controller="MyController"> 
<p>{{About}}</p> 
</div> 

JS:

.controller('MyController', ['$scope', function($scope) { 
$scope.About="This is me<br/>and not you!" 
} 

现在的HTML编码,我不想(在<br/>应导致换行符)

我已经尝试过<p ng-bind-html="About"></p>但是导致根本没有输出

回答

2

你需要让HTML文本中的默认情况下它角没有。

Plunker:http://plnkr.co/edit/K4KRCQi4Rpe99MJel5J2?p=preview

Angular Docs for $sce

严格语境逃逸(SCE)为其中AngularJS要求在某些情况下 绑定,从而得到以被标记为 安全使用一个值的模式该背景。这种上下文的一个例子是绑定用户通过ng-bind-html控制的任意html。我们将这些上下文称为 作为特权或SCE上下文。

<div ng-controller="htmlChar" ng-bind-html="about"></div> 

<script> 

    angular.module("app",[]) 
    .controller("htmlChar",function($scope, $sce){ 
    $scope.about= $sce.trustAsHtml("This is me<br/>and not you!"); 
    }); 

    angular.bootstrap(document,["app"]); 

</script> 
1

您不需要通过模型绑定在AngularJS中插入html,因为框架的哲学是保持HTML(页面的结构和样式)完整,并且只绑定要在该HTML内显示的数据。

如果您确实需要将HTML标签绑定到数据中,则需要使用$sanitize service

0

你必须在这里使用的角度编译功能,经过联系以获取更多信息angular compile