angularjs - 在 1.2+ 中从 $http 返回数据时,模板缓存中的模板不呈现绑定(bind)

标签 angularjs http templates caching

我有一个基本的应用程序,它通过 $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。你想要达到的效果很好:

Plnkr Example

关于angularjs - 在 1.2+ 中从 $http 返回数据时,模板缓存中的模板不呈现绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221084/

相关文章:

http - 如何使用 Synapse (Delphi) 发送 HTTP 数据并获得响应

c++ - 错误: no matching function for call to 'function namel'

angularjs - 防止提交时默认 :- Angularjs

node.js - 对 Node 的 Http 请求挂起并仅在按下服务器控制台上的 a 键后恢复

java - 玩!框架 - 处理 POST 请求

c++ - 在类模板中定义一个静态数组

c++ - 在模板中显示参数类型

angularjs - 如何在 Angularjs2 中设置初始可观察值?

javascript - 如何让我的 WordPress 网站在同一页面中显示博客文章,而无需使用 AngularJS 加载新页面?

javascript - 尝试使用 ui Angular 创建模态模板