【发布时间】:2015-07-07 14:40:31
【问题描述】:
我有一个返回 HTML 的过滤器,但 Angular 不能正确显示它。我包含了 angular-sanitize.min.js,并在各个地方尝试了 ng-bind-html 和 $sce。我知道我已经很接近了,但是在为此挣扎了几天之后,我想我会寻求一些专家的见解。一般来说,我对 Angular 和 javascript 还是很陌生。感谢您的帮助。
证明我已经消毒
<script src="lib/angular/angular-sanitize.min.js"></script>
app.js -- 清理包含并过滤我正在使用的
var myApp = angular.module('myApp', [
'ngRoute',
'clownfishControllers',
'ngSanitize'
]);
myApp.filter('fmtIt', function () {
return function (name) {
var parts = name.split(' "');
if (parts.length == 2) {
return "<i>".concat(parts[0], "</i>", ' "', parts[1]);
} else {
return "<i>".concat(parts[0], "</i>");
}
}
});
list.html -- 我在 html 文件中的两个示例
<h2 ng-bind-html="item.name | fmtIt"></h2> --strips off html in output
<h2>{{item.name | fmtIt }}</h2> --shows html tags in output
controllers.js -- 我尝试将 $sce 注入的控制器之一。
clownfishControllers.controller('ListCtrl', ['$scope', '$http', 'Parents', '$sce', function($scope, $http, Parents, $sce) {
$http.get('js/data.json').success(function(data) {
$scope.clownfish = data;
$scope.clownfishOrder = 'name';
$scope.parents = Parents;
console.log($scope);
});
}]);
app.js -- 最近的两次其他尝试,我尝试将这个作为附加过滤器堆叠在 fmtIt 过滤器上
myApp.filter('trustAsHTML', ['$sce', function($sce){
return function(text) {
return $sce.trustAsHtml(text);
};
}]);
-- 最初尝试这个是为了获得 $sce
myApp.filter('fmtIt', function ($sce) {
return function (name) {
var parts = name.split(' "');
if (parts.length == 2) {
return $sce.trustAsHtml("<i>".concat(parts[0], "</i>", ' "', parts[1]));
} else {
return $sce.trustAsHtml("<i>".concat(parts[0], "</i>"));
}
}
});
【问题讨论】:
标签: javascript html angularjs filter sanitize