我正在处理一个角度的应用程序,并且在我的html中渲染一个soundcloud emebed iframe时遇到了一些麻烦。正如你从我下面的代码中可以看到的,我打印出了我的getTracks函数中构建的数组中的所有轨道。所有数据都被调用并正确存储在$ scope中,并且我可以在控制台中看到在控制台中进行调试。当我将embedIframe属性添加到对象时,如果不使用trustAsHtml将其作为文本呈现出来,如果我使用ng-bind-html,它将在html标记中呈现它本身,而不是它的内部。当我通过trustAsHtml传递它时,我只是在html中没有得到任何回报。 embedIframe道具获取了一个名为 'TrustedValueHolderType'的函数,但它似乎没有存储任何东西......或者我不知道如何从中获取数据。Angularjs渲染服务的iframe
任何人可以给我的提示将是伟大的!如果你需要更多的信息,只需要问。
我的HTML
<section id="grid" ng-controller="GridCtrl">
<div class="track flipped" ng-repeat="track in soundcloud.tracks">
<div class="front">
<img src="images/loading.gif" />
</div>
<div class="back" ng-bind-html="{{track.embedIframe}}"></div>
</div>
</section>
我的控制器
.controller("GridCtrl", ['$scope', 'Soundcloud', function($scope, Soundcloud){
// Init the Soundcloud SDK config
Soundcloud.initialize();
// Store tracks in the $scope
$scope.soundcloud = Soundcloud.getTracks();
//Debug
console.log("GridCtrl", $scope.soundcloud);
}])
我的服务
getTracks: function(){
var deferred = $q.defer();
var promise = deferred.promise;
promise.tracks = [];
SC.get("/me/tracks", function(response){
// Push Tracks
promise.tracks = response;
resolve(null, response, deferred);
}); //SC.get
promise.then(function(tracks){
$.each(tracks, function(k, v){
if(v.sharing == 'public'){
SC.oEmbed(v.uri, function(oembed){
promise.tracks[k].embedIframe = $sce.trustAsHtml(oembed.html);
resolve(null, oembed, deferred);
});
}
});
});
return promise;
}