JavaScript内部角度';s(1.4.7)ng视图不';行不通
我有一个进入ng视图的部分页面,我有一个与该页面无关的JS代码,因此我只希望它包含在该页面中,因为我只需要它,并且为了避免index.html中的开销,我尝试了使用JavaScript内部角度';s(1.4.7)ng视图不';行不通,javascript,angularjs,Javascript,Angularjs,我有一个进入ng视图的部分页面,我有一个与该页面无关的JS代码,因此我只希望它包含在该页面中,因为我只需要它,并且为了避免index.html中的开销,我尝试了使用ng bind html之类的注入,但没有成功 这里有一些代码可以帮助理解发生了什么 index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <base href="/"&g
ng bind html
之类的注入,但没有成功
这里有一些代码可以帮助理解发生了什么
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
<title>Node and Angular App</title>
<!-- CSS -->
<link rel="stylesheet" href="libs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
<!-- JS -->
<script src="libs/angular/angular.min.js"></script>
<script src="libs/angular-route/angular-route.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-sanitize.min.js"></script>
<!-- ANGULAR CUSTOM -->
<script src="js/controllers/TestCtrl.js"></script>
<script src="js/appRoutes.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="sampleApp">
<div class="container">
<nav>
<a href="/test">Test</a>
</nav>
<!-- ANGULAR DYNAMIC CONTENT -->
<div ng-view></div>
</div>
</body>
</html>
app.js
angular.module('TestCtrl', ['ngSanitize']).controller('TestController', function($scope) {
var str = '<h1>this shows</h1><script>alert("hello")</script><h1>this doesn\'t show</h1>';
$scope.content = function() { return str; }
});
angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
.when('/test', {
templateUrl: 'views/test.html',
controller: 'TestController'
})
$locationProvider.html5Mode(true);
}]);
var-app=angular.module('sampleApp',['ngRoute','appRoutes','TestCtrl'])代码>我不完全理解您的问题,但如果您想将html注入视图,请尝试将Ngsanize添加到模块中的依赖项列表中,您可以:
controller("mainCtrl", ['$sce', function($sce){
//function that returns trusted html
this.htmlStuff = function(){
return $sce.trustAsHtml("<p>Html String</p>");
}
}]);
controller(“mainCtrl”、['$sce',函数($sce){
//返回受信任的html的函数
this.htmlStuff=函数(){
返回$sce.trustAsHtml(“Html字符串””;
}
}]);
那么在你看来,你可以
<div ng-controller='mainCtrl as main'>
<div ng-bind-html="main.htmlStuff()"></div>
</div>
如果这不是你的意思,然后你必须重新表述这个问题,这个句子太长了,无法思考。ng bind html
不会编译这个范围。ng bind html
@PankajParkar有什么解决办法吗?@RichardHall你需要在你的应用程序中ngSanitize
模块重新设计html时,简单的绑定是不起作用的,还需要包括angular sanitize.js
@richard请尝试在代码中更改这一行:$scope.content=function(){return str;}
到$scope.content=function(){return$sce.trustAsHtml(str);}
。如果这不起作用,您可能必须将字符串拆分为HTML和JS部分,并在适当的部分使用$sce.trustAsHtml()和$sce.TrustashJS()。@user2994666不,只有HTML部分起作用,并且它们显示,至于JS部分,它们不呈现(我已经查看了浏览器的检查器,并且我将其放入的DIV是空的)@RichardHall返回javascript和html trustAsJs()和trustAsHtml()的函数是不同的,您必须将它们分开。但是,它真的值得承受压力吗?