作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在通过 ng-bind-html-unsafe 将 $scope.content 对象插入 DOM 后,我无法重新编译在 $scope.content 对象中找到的 Angular 代码。有人知道如何让 Angular 消化这段代码吗?提前非常感谢!
###index.html###
<body ng-controller="MainCtrl">
<h2>HTML Testing</h2>
<div ng-bind-html-unsafe="content.iPhone"></div>
</body>
###app.js###
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.content = {
iPhone: "<div ng-style=\"style.iPhoneTest\">This shows up on an iPhone</div>",
iPad: "<div ng-style=\"style.iPadTest\">This shows up on an iPad</div>",
androidPhone: "<div ng-style=\"style.androidPhoneTest\">This shows up on an Android phone</div>",
androidTablet: "<div ng-style=\"style.androidPhoneTablet\">This shows up on an Android tablet</div>"
};
$scope.style = {
iPhoneTest: {background: 'blue', color: 'black'},
iPadTest: {background: 'black', color: 'white'},
androidPhoneTest: {background: 'yellow', color: 'black'},
androidTabletTest: {background: '#111', color: 'white'}
};
});
最佳答案
为什么不使用指令而不是注入(inject)?
<body ng-controller="MainCtrl">
<h2>HTML Testing</h2>
<div ng-my-phones="style"></div>
</body>
app.directive("ngMyPhones", function(){
return {
scope: {
"style": "=ngMyPhones"
},
template: '<div ng-style=\"style.iPhoneTest\">This shows up on an iPhone</div>'+
'<div ng-style=\"style.iPadTest\">This shows up on an iPad</div>'+
'<div ng-style=\"style.androidPhoneTest\">This shows up on an Android phone</div>'+
'<div ng-style=\"style.androidPhoneTablet\">This shows up on an Android tablet</div>'
}
});
否则你必须使用$compile
来告诉Angular将范围应用到自定义html上,但这是一个丑陋的方法。
如果您想动态决定显示哪部手机,您可以将 $scope.contents
数组传递到指令 $compile
中,并像这样手动附加元素:
<body ng-controller="MainCtrl">
<h2>HTML Testing</h2>
<div ng-my-phone="content.iPhone" ng-my-phone-style="style"></div>
</body>
</html>
app.directive("ngMyPhone", function($compile){
return {
scope: {
"ngMyPhone": "=",
"style": "=ngMyPhoneStyle"
},
link: function($scope, $element){
var oldPhoneElement;
//Everytime the phone
$scope.$watch("ngMyPhone", function(newContent){
angular.element(oldPhoneElement).remove();
oldPhoneElement = angular.element(newContent);
$compile(oldPhoneElement)($scope);
$element.append(oldPhoneElement);
});
}
};
});
关于javascript - 如何在净化后的 HTML 字符串中消化我的 Angular 指令? | AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24399117/
我试图用 Python 编写理论上的蛋白质序列胰蛋白 enzyme 切割代码。胰蛋白 enzyme 的切割规则是:在 R 或 K 之后,但不在 P 之前。(即胰蛋白 enzyme 在每个 K 或 R
我正在消化其他一些 zip 文件的内容以生成 MD5。文件内容被摘要并生成 MD5,而不是例如基于时间戳生成 MD5。因此,我断言两个文件具有相同的内容,即使它们是在不同时间生成的。因此,我编写了以下
我是一名优秀的程序员,十分优秀!