각도를 사용하여 동적 사이트를 작성하려고합니다. 나는 $q.defer
으로 setTimeout
을 사용하여 HTML 로딩 지연을 시뮬레이션하려고합니다. 시간 초과가 없으면 작동하지만 타임 아웃을 추가하자마자 데이터가로드되지 않습니다. 다른 뷰 사이를 클릭하면 은이 채워 지므로 실행 중임을 알 수 있습니다. 하지만 Angular는 마침내 사용할 수 있음을 알지 못합니다.각도가 동적으로 지연된 HTML을 업데이트하지 않습니다.
내가 함께 HTML 파일을 가지고 다음
이<div ng-include="'teasers.html'"></div>
여기 teasers.html
입니다 :
<div ng-controller="MyCtrl">
<div id='my-content' ng-view></div>
<div id='footer'>
footer here
<a href="#!/">View 1</a> <a href="#!/view2">View 2</a>
</div>
</div>
여기 view1.html
의 다음
<div class='column content' ng-repeat="teaser in data.teasers">
<div class='button type-overlay' ng-class="{{ 'button-' + ($index + 1) }}">
<div class='teaser-text'>
<img class='button-background' ng-src='{{ teaser.img_src }}'>
<span class='teaser-text'>{{ teaser.name }}</span>
</div>
</div>
</div>
의 내 app.js
:
var app = angular.module('app', [], function($routeProvider, $locationProvider) {
$locationProvider.hashPrefix("!");
$routeProvider.when('/', {
templateUrl: 'view1.html'
});
$routeProvider.when('/view2', {
templateUrl: 'view2.html'
});
});
app.factory('data', function($http, $q) {
return {
fetchTeasers: function() {
var deferred = $q.defer();
setTimeout(function() {
deferred.resolve([
{
"name": "Teaser 1",
"img_src": "SRC"
},
{
"name": "Teaser 2",
"img_src": "SRC"
},
{
"name": "Teaser 3",
"img_src": "SRC"
},
{
"name": "Teaser 4",
"img_src": "SRC"
}
]);
}, 5000);
return deferred.promise;
}
}
});
그리고 여기에는 년대 controller.js
:
function MyCtrl($scope, data) {
$scope.data = {};
$scope.data.teasers = data.fetchTeasers();
}
내가 각도에서 작업 deferred
을 얻으려면 어떻게해야합니까?