Javascript $http.get从响应数据中获取变量

Javascript $http.get从响应数据中获取变量,javascript,angularjs,angularjs-service,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.htm

我试图缓存一个包含一些角度变量的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>
无论如何,我都在运行$http.get-inside运行块

编辑:据我所见,这是一个templateCache问题。templateCache支持变量还是只能缓存静态数据?

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

var $el = $compile('<div>{{myData}}</div>')(scope);
$body.append($el); // wrapped $body with jqLite
我还为您创建了plnkr。希望它能帮助你。

谢谢,它很管用!我知道如果我想在服务中使用它,我必须用$rootScope替换scope。$newIt和你说的不完全一样,因为如果你在eg.controller中使用相同的代码,你也必须使用$compile。只是澄清一下,如果您想手动向DOM插入某些内容,您必须将作用域注入$compile服务返回的模板函数。实际上,您必须使用$compile,但我是说在服务中您不能注入$scope,但您可以注入$rootScope,因此您必须创建类似以下的变量scope=$rootScope.$new;这样$compilehtmlscope就可以工作了。
$http.get('http://myserver.com/file.html', {
    cache: $templateCache
}).then(function(response) {
  // do sth
});