我有一个基本应用程序,它通过$ http服务获取一些数据,但是当模板从模板缓存提供时,它不会在模板中呈现正确的数据。我的代码如下所示:
angular.module('app', [])
api服务:
.factory('api', function($http, $q) {
return {
getCars: function() {
return $http.get('api/cars');
}
};
})
使用该服务的控制器:
.controller('carsCtrl', function($scope, api) {
api.getCars().success(function(data) {
$scope.cars = data;
});
})
路线设置:
.config(function($routeProvider) {
$routeProvider.when('/cars', {
templateUrl: 'cars.html',
controller: 'carsCtrl'
});
});
和模板cars.html
<div ng-repeat="car in cars">
{{ car }}
</div>
这是第一次浏览器点击/cars
时有效,但是,如果我按下浏览器中的前进按钮再次点击URL而没有重新加载页面,则{{car}}
不是被渲染。如果将cars.html
放在templateCache中,如下所示:
angular.module('app').run(function($templateCache) {
$templateCache.put('cars.html', '<div ng-repeat="car in cars">{{ car }}</div>');
});
也未呈现{{car}}
绑定。
我怀疑这与Angular有关,不再在模板中展开承诺,但并不完全确定。有谁知道我做错了什么以及如何正确编写这段代码?
答案 0 :(得分:0)
好吧,我在你的代码中看到了一些语法错误(也许你没有复制代码,但为了不确定而手动输入代码)。您还返回deferred而不是deferred.promise。你想要实现的目标很好: