我正在尝试使用$ http从正在使用的服务中获取二进制图像,但是我认为我遇到了异步问题。
这是我在控制器中使用的代码:
$scope.downloadImage = function(imgReady, index) {
if (imgReady == false) {
for (var i = $scope.vehicles[index].events.length - 1; i >= 0; i--) {
var config = {
method: 'POST',
url: '/Events/SnapShot',
data: $scope.vehicles[index].events[i],
cache: false
}
RequestService.makeApiRequest(config).success(function(response) {
console.log(response.data); // shows the binary data
$scope.vehicles[index].events[i].snapshot = response.data; // Results in: TypeError: Cannot set property 'snapshot' of undefined
});
console.log($scope.vehicles[index].events[i]); // Logs event object without snapshot property
};
}
}
这是我认为的代码:
<li ng-repeat="vehicle in vehicles" ng-init="isHidden=false; imgReady=false;" class="event-list-animation">
<div ng-click="isHidden=!isHidden; downloadImage(imgReady, $index); imgReady=true" class="heading" ng-hide="vehicle.events.length < 1">
<h1>Vehicle: {{ vehicle.name }}</h1>
<span ng-class="(isHidden == false) ? 'details-toggle' : 'details-toggle open'">
expand / collapse
</span>
</div>
<div ng-show="isHidden" class="body event-show-hide-animation">
<div class="wrap" ng-repeat="event in vehicle.events">
<ul>
<li>Event: {{ event.number }}</li>
</ul>
<img ng-src="{{ event.snapshot }}" />
</div>
</div>
</li>
所以我有几辆车,每辆车下都有事件,我试图为每个事件抓取图像。但这似乎导致了异步问题。我也尝试过:
$scope.vehicles[index].events[i].snapshot = RequestService.makeApiRequest(config).success(function(response) {
return response.data;
});
但是,这似乎导致以下问题: GET http://localhost:3000/%7B%7D 404 (Not Found)
这是试图加载的二进制图像数据吗?这是我第一次使用二进制图像数据,并被告知要使用ng-src指令来使其正确加载。
谢谢在这个问题上的任何帮助。
我认为是TypeError
因为您错误地捕获i
了函数关闭中的。
请尝试以下方法:
RequestService.makeApiRequest(config).success(function(j) {
return function(response) {
console.log(response.data);
$scope.vehicles[index].events[j].snapshot = response.data;
}
}(i));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句