$ http.get从响应数据中打破AngularJS变量

时间:2014-12-14 00:17:50

标签: javascript angularjs angularjs-service

我正在尝试缓存包含一些角度变量的html文件,但是当我将文件内容追加到dom时,所有变量都只是纯文本,如{{ variable.name.here }}

我正在使用$ http.get检索html文件,如下所示:

$http.get('app/shared/partials/raise-error.html').then(function(res){
    $templateCache.put('raiseErrorBlock', res.data);
});

...这是raise-error.html(部分内容):

<div id="raiseError" ng-show="errorParams.raise" class="slide-down">
    <div class="raiseErrorWrapper">
        <div class="rew-header">
            <i class="fa fa-bug"></i>
            <span class="rewh-title">{{ errorParams.title }}</span>
        </div>
    </div>
</div>

我在run()块中运行$ http.get,无论如何。

编辑:我可以看到它是一个templateCache问题。 templateCache是​​否支持变量,或者它只能缓存静态数据?

1 个答案:

答案 0 :(得分:0)

您必须使用$compile服务才能使角度表达式正常工作。

var $el = $compile('<div>{{myData}}</div>')(scope);
$body.append($el); // wrapped $body with jqLite

正如 ngdoc 所说:

  

$ compile - 将HTML字符串或DOM编译成模板并生成   一个模板函数,然后可以用来链接范围和   模板在一起。

您还可以使用更短的方法在$ templateCache中存储内容,例如。

$http.get('http://myserver.com/file.html', {
    cache: $templateCache
}).then(function(response) {
  // do sth
});

我也为你创造了plnkr。希望它会对你有所帮助。 http://plnkr.co/edit/ls4kllAvdVb3qMvm3mBA?p=preview