当模板从1.2+中的$ http返回时,templatecache中的模板不呈现绑定

时间:2014-01-19 18:51:17

标签: angularjs http templates caching

我有一个基本应用程序,它通过$ 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有关,不再在模板中展开承诺,但并不完全确定。有谁知道我做错了什么以及如何正确编写这段代码?

1 个答案:

答案 0 :(得分:0)

好吧,我在你的代码中看到了一些语法错误(也许你没有复制代码,但为了不确定而手动输入代码)。您还返回deferred而不是deferred.promise。你想要实现的目标很好:

Plnkr Example