在您说出之前,是的,我已查看了与此问题相关的所有其他链接,但这些链接似乎都不适用于我的情况。
我是Ionic的新手,我正在寻求帮助。
我有一个控制器,
.controller('VideoCtrl', function($scope, $cordovaCapture, VideoService) {
$scope.clip = '';
$scope.captureVideo = function() {
$cordovaCapture.captureVideo().then(function(videoData) {
VideoService.saveVideo(videoData).success(function(data) {
$scope.clip = data;
$scope.$apply();
}).error(function(data) {
console.log('ERROR: ' + data);
});
});
};
并打电话给它,
<div class="button-bar">
<button class="button button-positive" ng-click="captureVideo()">
Capture a video
</button>
</div>
应该更新图像,
$scope.urlForClipThumb = function(clipUrl) {
var name = clipUrl.substr(clipUrl.lastIndexOf('/') + 1);
var trueOrigin = cordova.file.dataDirectory + name;
var sliced = trueOrigin.slice(0, -4);
return sliced + '.png';
}
这会在屏幕上显示......
</div>
<img ng-src="{{urlForClipThumb(clip) || '//:0'}}" ng-click="showClip(clip)" style="height: 250px; width: 150px;"/>
</div>
但是,图像永远不会更新,$ scope。$ apply();总是返回正在进行的摘要错误?
如果您需要更多信息,请告诉我们! (我已经尝试过安全应用和超时,他们也不会做任何事......)
答案 0 :(得分:0)
如果VideoService.saveVideo
正在使用$q
,则会调用digest
,因此不再需要$apply
。您可以检查摘要是否正在进行并有条件地应用:
if(!$scope.$$phase) {
scope.$digest();
}