如何從AngularJS中的變量中設(shè)置iframe src屬性我想把src變量的iframe屬性,我無法讓它工作.標(biāo)記:<div class="col-xs-12" ng-controller="AppCtrl">
<ul class="">
<li ng-repeat="project in projects">
<a ng-click="setProject(project.id)" href="">{{project.url}}</a>
</li>
</ul>
<iframe ng-src="{{trustSrc(currentProject.url)}}">
Something wrong... </iframe></div>控制器/app.js:function AppCtrl ($scope) {
$scope.projects = {
1 : {
"id" : 1,
"name" : "Mela Sarkar",
"url" : "http://blabla.com",
"description" : "A professional portfolio site for McGill University professor Mela Sarkar."
},
2 : {
"id" : 2,
"name" : "Good Watching",
"url" : "http://goodwatching.com",
"description" : "Weekend experiment to help my mom decide what to watch."
}
};
$scope.setProject = function (id) {
$scope.currentProject = $scope.projects[id];
console.log( $scope.currentProject );
}}使用這段代碼,沒有任何東西被插入到iframe的src屬性。只是一片空白。更新1:我注射了$sce現(xiàn)在,AppCtrl和$sce.TrustUrl()中的依賴關(guān)系可以正常工作,而不會(huì)引發(fā)錯(cuò)誤。不管怎么回事TrustedValueHolderType我不知道如何插入一個(gè)實(shí)際的URL。如果在屬性的內(nèi)插大括號(hào)中使用$sce.TrustUrl(),則返回相同的類型。src="{{trustUrl(currentProjectUrl))}}"或者在設(shè)置currentProjectUrl值時(shí),在控制器內(nèi)執(zhí)行此操作。我甚至都試過了。更新2:我知道了如何使用.toString()從受托人UrlHolder返回url,但是當(dāng)我這樣做時(shí),當(dāng)我試圖將它傳遞到src屬性時(shí),它會(huì)拋出安全警告。更新3:如果在控制器中使用信任AsResourceUrl()并將其傳遞給ng-src屬性中使用的變量,它就能工作:$scope.setProject = function (id) {
$scope.currentProject = $scope.projects[id];
$scope.currentProjectUrl = $sce.trustAsResourceUrl($scope.currentProject.url);
console.log( $scope.currentProject );
console.log( $scope.currentProjectUrl );}我的問題似乎通過這個(gè)解決了,雖然我不太清楚為什么。
如何從AngularJS中的變量中設(shè)置iframe src屬性
慕的地10843
2019-07-17 10:09:46