我有一个基本的应用程序,它通过 $http 服务获取一些数据,但是当从模板缓存提供模板时,它不会在模板中正确呈现数据。我的代码如下所示:
angular.module('app', [])
接口(interface)服务:
.factory('api', function($http, $q) {
return {
getCars: function() {
return $http.get('api/cars');
}
};
})
使用服务的 Controller :
.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}}
绑定(bind)也未呈现。
我怀疑这与 Angular 不再在模板中展开 promises 有关,但不完全确定。有谁知道我做错了什么以及如何正确编写这段代码?
最佳答案
好吧,我在你的代码中看到了一些语法错误(也许你没有复制代码而是手动输入的,所以不确定)。您还返回了 deferred 而不是 deferred.promise。你想要达到的效果很好:
关于angularjs - 在 1.2+ 中从 $http 返回数据时,模板缓存中的模板不呈现绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221084/