Tôi đang cố gắng đặt src
thuộc tính của iframe từ một biến và tôi không thể làm cho nó hoạt động ...
Đánh dấu:
<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>
bộ điều khiển / 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 );
}
}
Với mã này, không có gì được chèn vào src
thuộc tính của iframe . Nó chỉ trống.
Cập nhật 1:
Tôi đã thêm phần phụ thuộc $sce
vào AppCtrl và $ sce.trustUrl () hiện hoạt động mà không gặp lỗi. Tuy nhiên, nó trả về TrustedValueHolderType
mà tôi không chắc chắn cách sử dụng để chèn URL thực tế. Loại tương tự được trả về cho dù tôi sử dụng $ sce.trustUrl () bên trong dấu ngoặc nội suy trong thuộc tính src="{{trustUrl(currentProjectUrl))}}"
hoặc nếu tôi thực hiện bên trong bộ điều khiển khi đặt giá trị của currentProjectUrl. Tôi thậm chí đã thử nó với cả hai.
Cập nhật 2: Tôi đã tìm ra cách trả lại url từ TrustedUrlHolder bằng cách sử dụng .toString () nhưng khi tôi làm điều đó, nó sẽ đưa ra cảnh báo bảo mật khi tôi cố gắng chuyển nó vào thuộc tính src.
Cập nhật 3: Nó hoạt động nếu tôi sử dụng trustAsResourceUrl () trong bộ điều khiển và chuyển nó đến một biến được sử dụng bên trong thuộc tính 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 );
}
Vấn đề của tôi dường như được giải quyết bằng cách này, mặc dù tôi không chắc tại sao.