我正在写一个Angular应用程序,{{myVal}}我想要显示一个响应.
我怎么做?如果我只是使用绑定语法,innerHTML它会编码所有div字符(当然).
我需要以某种方式将a的内部html绑定{{myVal}}到变量值.
ng-bind-html-unsafe 已在Angular 1.2中删除
我正在尝试实现我需要使用的东西ng-bind-html-unsafe.在文档和github提交中,他们说:
当绑定到$ sce.trustAsHtml(string)的结果时,ng-bind-html提供ng-html-bind-unsafe like行为(innerHTML是没有清理的结果).
你怎么做到这一点?
嵌套在我们的Angular应用程序中的是一个名为Page的指令,由一个控制器支持,该控制器包含一个带有ng-bind-html-unsafe属性的div.这被分配给名为'pageContent'的$ scope var.此var从数据库中分配动态生成的HTML.当用户翻转到下一页时,会调用DB,并将pageContent var设置为这个新的HTML,它将通过ng-bind-html-unsafe在屏幕上呈现.这是代码:
页面指令
angular.module('myApp.directives')
.directive('myPage', function ($compile) {
return {
templateUrl: 'page.html',
restrict: 'E',
compile: function compile(element, attrs, transclude) {
// does nothing currently
return {
pre: function preLink(scope, element, attrs, controller) {
// does nothing currently
},
post: function postLink(scope, element, attrs, controller) {
// does nothing currently
}
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
Page指令的模板(上面的templateUrl属性中的"page.html")
<div ng-controller="PageCtrl" >
...
<!-- dynamic page content written into the div below -->
<div ng-bind-html-unsafe="pageContent" >
...
</div>
Run Code Online (Sandbox Code Playgroud)
页面控制器
angular.module('myApp') …Run Code Online (Sandbox Code Playgroud) 这是我的模板:
<div class="span12">
<ng:view></ng:view>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的视图模板:
<h1>{{stuff.title}}</h1>
{{stuff.content}}
Run Code Online (Sandbox Code Playgroud)
我得到了contenthtml,我想在视图中显示,但我得到的只是原始的HTML代码.我该如何呈现该HTML?
我试图使用ng-bind-html-unsafe属性在模板中插入HTML .但由于某种原因,它不起作用.
我的代码:
<tr class="white two-button" ng-repeat="(key,value) in recommendations | ojoScoreFilter:ojoScore | relevancyScoreFilter:relevancyScore | orderBy:predicate:reverse">
<td>
<div ng-bind-html-unsafe="value.button"></div>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我无法看到HTML.如果我ng-bind-html-unsafe="value.button"改为ng-bind-html-unsafe="{{value.button}}"然后它显示HTML但在属性中,如下所示:
<div ng-bind-html-unsafe="<a class="action_hrefs full-width bgcolor10 purple-hover flat-button flat-white-button btn" data-value="947" href="#"><i class="fa fa-lock"></i> Unlock</a>"></div>
Run Code Online (Sandbox Code Playgroud) 是否有一个角度JS命令将在文本上进行HTML转义?我正在处理一个自定义指令,并需要转义它生成的一些输出.
在内部,AngularJS sanitzer使用encodeEntities函数,但不暴露它.我知道我可以复制这个函数,但似乎应该有一个标准的方法来做到这一点.
用例:我有一个自定义指令,用于语言本地化.该指令使用数据文件中的键查找来查找语言文本.在某些情况下,允许此文本包含HTML,和/或该指令生成HTML以改进最终的可视格式.此外,该指令将Angular表达式作为参数,并将它们用作字符串中标记的替换.我需要对这些参数进行编码,因为它们可能不是HTML安全的.
例如,该指令被称为属性i18n-html='welcome_text_html,1+1,user.name'.该指令然后按照描述格式化字符串并用于element.html更新DOM节点.
如何显示 空格而不是字符串.raw在树枝上有过滤器吗?
<div>{{item}}</div>
$scope.item = ' ';
Run Code Online (Sandbox Code Playgroud)
但结果是逃脱的&nbsp;.我需要这个因为' '高度为0.
我有一个$ scope变量,如下所示:
$scope.example = "<h1>Hello</h1>"
Run Code Online (Sandbox Code Playgroud)
当我在视图中输出它时{{example}},我想要呈现HTML.目前它输出:
<h1>Hello</h1>
而不是
我想要达到的目标是什么?
我的数据库存储了产品信息,其中很多都被组织成列表.我将数据加载到Angular中$scope.post.
例如,
$scope.post.size_description = '<li> Fits true to size. Take your normal size\r</li>
<li> Slim-cut, mid-rise style</li>
<li> Long in length, alter to fit</li>
<li> Model wears an IT 48\r</li>
<li> Model measures: waist size 32, height 6\'1"/ 185cm\r</li>'.
Run Code Online (Sandbox Code Playgroud)
当我尝试将此数据加载到我的Angular应用程序中时,它会呈现为文本(即<li>未解析).我理解这可能是出于安全原因而发生的,但它有什么办法吗?
此应用程序的一部分从服务器获取HTML,需要显示为实时HTML.这很容易用ng-bind-html-unsafe="expression"指令完成(至少在Angular 1.0.2中).
但是,HTML也有应该运行的JavaScript,因为它定义了HTML中使用的函数,而且使用该指令似乎不会发生.
是否有一些Angular风格的方法呢?或者我是否需要探索带外脚本加载技术?
(请不要讨论我是否应该信任服务器足以运行它发送给我的java脚本.我相信服务器,我知道风险,这是一个非常专业的情况.)
angularjs ×9
html ×4
javascript ×3
angular ×1
compilation ×1
dom ×1
dynamic ×1
escaping ×1
ng-bind-html ×1