我有一个基本的应用程序,它通过$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
时起作用,但是,如果我在浏览器中按back on forward按钮第二次点击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不再在模板中展开承诺有关,但并不完全确定。有人知道我做错了什么,以及如何正确地编写这段代码吗?
最佳答案
嗯,我在你的代码中看到了一些语法错误(也许你没有复制代码,而是手动输入,所以不确定)。而且你还延迟了而不是延迟了。答应。你想达到的效果很好:
Plnkr Example
关于angularjs - 从1.2版以上的$ http返回数据时,templatecache中的模板未呈现绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21221084/