我有一个AngularJS组件,它将HTML加载到其范围内并使用 ng-bind-html
。我注意到< script>
标签没有执行。
如何让这个示例代码提醒?


 app.component('myComponent' ,{
 bindings:{
 file:'<'
},
 controller:function($ http,$ sce){
 var $ ctrl = this; 
 $ ctrl.onChanges = function(changes){
 $ http.get($ ctrl.file).then(function(response){
 $ ctrl.html = $ sce.trustAsHtml( response.data);
});
};
},
 template:'< div>< div ng-if =“$ ctrl.html”ng-结合-HTML = “$ ctrl.html” >< / DIV>< / DIV>'
});
 代码>


 正在返回的 $ http
数据是:
< div>我是html< script> alert('我是一个脚本')< / script>< / div>
或者,如果我怎么办?想在HTML中有一个控制器引用吗?


 < div ng-controller =“myController”>我是html< / div>
答案 0 :(得分:1)
在幕后,$http.get
只是使用XMLHttpRequest。由于安全性限制,即跨站点脚本,动态添加到DOM的脚本(例如,在XMLHttpRequest之后添加)不会执行。因此,在HTML中执行脚本的唯一方法是在结果中找到脚本标记,然后在内容上调用eval()
。