मैं 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>
नियंत्रक / 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 () का उपयोग करके कैसे विश्वसनीयUolder से 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 );
}
मेरी समस्या इससे हल होती दिख रही है, हालाँकि मुझे यकीन नहीं है कि क्यों।