我正在尝试获取css文件的文件内容并尝试将其存储在我稍后将要使用的变量中。我正在使用XMLHttprequest来获取文件的内容。当我尝试将控制台置于其中时onreadystatechange输出完美无缺,但是当它在外面尝试相同的东西时,它在变量中显示空结果。我听说过$ apply和其他东西,但是有另一种方法可以实现这一点,我在哪里出错了?...提前致谢... 这是代码
$scope.files={};
var client = new XMLHttpRequest();
client.open('GET', '/your_css/bootstrap.css');
client.onreadystatechange = function()
{
var bootstrap=client.responseText;
css.file("bootstrap.css",bootstrap);
$scope.$applyAsync(function(){
$scope.files.bootstrap=bootstrap;
})
}
client.send();
答案 0 :(得分:1)
使用包裹AngularJS $http Service的XHR API并与AngularJS框架集成:
$http.get('/your_css/bootstrap.css').then(function (response) {
$scope.files.bootstrap = response.data;
});
答案 1 :(得分:0)
您刚才描述的行为的原因是onreadystatechange
未执行,只是定义了。 client.send()
正在发送提取文件的请求,onreadystatechange
仅在响应(和文件)到达浏览器时执行。 “之后”onreadystatechange
只是位置之后,但就时间而言。 onreadystatechange
是callback。你希望你的asynchronous request同步行为,但这是一个坏主意和糟糕的设计。我建议你习惯于异步请求,因为在客户端等待请求完成是一个坏主意,如果有多个请求,它们会变得更糟,所有请求都是同步执行的。这会伤害到性能。