是的!我今天想通了。在我的情况下,我是从同一个域加载的,但是在整个页面中加载(角度、引导程序等)是行不通的。
简而言之,您需要让拦截器捕获响应并对其进行处理。
首先,将您的 ng-include 指向您的网址。
<div ng-include="currentView.content.url"></div>
其次,我们需要拦截响应。就我而言,我知道我将始终加载#articleAnswer。
app.factory('templateInterceptor', function($q) {
return {
response: function( response ) {
var html = response.data.toString();
if (html.indexOf('articleAnswer') !== -1) {
var parser = new DOMParser();
var doc = parser.parseFromString(html,'text/html');
var article = doc.querySelectorAll('#articleAnswer');
response.data = article;
}
return response;
}
};
});
第三,将你刚刚创建的工厂添加到你的 $httpProvider 拦截器中。
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('templateInterceptor');
});
第四,您可能还希望这个位允许您加载受信任的 html。
app.config(function($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist(['self']);
});
我相信有人有更优雅的方式来做这件事,但希望这会有所帮助!