我有一个基本的应用程序,它通过$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/

10-11 00:54
查看更多