我正在尝试使用 Angular 构建一个动态站点。我正在尝试使用setTimeout
with来模拟加载 HTML 的延迟$q.defer
。如果我没有超时,它可以工作,但是一旦我添加超时,数据就不会加载。如果我在不同的视图之间单击,它确实会被填充,所以我知道它正在执行。但 Angular 似乎并没有意识到它终于可用了。
我有一个 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 ng-include="'teasers.html'"></div>
这是teasers.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
在 Angular 中工作?