以下の ng-repeat マークアップを含む ng ページを読み込むと、イテレータが入力される前に IMG タグがレンダリングされますが、src 値が存在しないため、部分的な src に対して 404 が生成されます。
<div ng-repeat="item in preview_data.items">
<h4>{{item.title}}</h4>
<a href="http://www.youtube.com/watch?v={{item.id}}" target="_blank"><img src="{{item.thumb}}" /></a>
</div>
次に、コントローラーが起動し、適切なビデオのリストが入力されます。
コントローラーがデータの準備ができるまで、HTML がレンダリングされないようにするにはどうすればよいですか?
ページは次のルートで呼び出されます。
app.config(function ($routeProvider, $locationProvider ) {
$locationProvider.html5Mode(true);
console.log('config');
$routeProvider.when("/", {
templateUrl: "/templates/createFeed.html",
controller: "CreateFeedController"
});
});
ファクトリを呼び出して、バックエンド API からプレビューする動画のリストを取得します。
app.controller("CreateFeedController", function ($scope, $route, $sce, Preview) {
var keywords = decodeURIComponent($route.current.params.keywords);
$scope.preview_data = {
keywords: keywords
}
//pass parameters to web preview API
Preview.get(keywords, function (data) {
$scope.preview_data.items = data;
});
});
app.factory('Preview', function ($http) {
return{
get: function (keywords, next) {
$http({method: 'GET', url: '/api/preview/', json:true,
params: {keywords: keywords}}
).success(function (data) {
// prepare data here
//console.log(data);
next(data);
});
}
};
});