src
변수에서 iframe 의 속성 을 설정하려고 하는데 작동하지 않습니다 ...
마크 업 :
<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>
controllers / 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
의존성을 AppCtrl에
주입했으며 $ sce.trustUrl ()은 이제 오류를 발생시키지 않고 작동합니다. 그러나 TrustedValueHolderType
실제 URL을 삽입하는 방법을 잘 모르겠습니다. 속성의 보간 중괄호 안에 $ sce.trustUrl ()을 사용하는지 src="{{trustUrl(currentProjectUrl))}}"
또는 currentProjectUrl의 값을 설정할 때 컨트롤러 내에서 사용하면 같은 유형이 반환 됩니다. 나는 심지어 둘 다 시도했다.
업데이트 2 : .toString ()을 사용하여 trustedUrlHolder에서 URL을 반환하는 방법을 알아 냈지만 그렇게하면 src 속성에 전달하려고 할 때 보안 경고가 발생합니다.
업데이트 3 : 컨트롤러에서 trustAsResourceUrl ()을 사용하고 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 );
}
왜 그런지는 모르겠지만 내 문제는 이것으로 해결 된 것 같습니다.