[英]angular-ui, ionic trigger function in controller
我对使用离子的angular-ui有问题。 每当有人进入菜单“ uploadPicture”时,我都试图关闭相机,但是该功能只是在有人第一次进入页面时触发。
应该触发的函数称为takePicture()。 如果您需要更多详细信息,请告诉我!
谢谢。
菜单如下所示:
<ion-item nav-clear menu-close href="#/app/uploadPicture">
Upload Picture
</ion-item>
stateProvider:
.state('app.uploadPicture', {
url: "/uploadPicture",
views: {
'menuContent': {
templateUrl: "templates/uploadPicture.html",
controller: 'uploadPictureCtrl'
}
}
})
和控制器:
function takePicture () {
pictureSource = navigator.camera.PictureSourceType.CAMERA;
processPicture()
}
takePicture();
function processPicture() {
$scope.canUpload = true;
var options = {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: pictureSource,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 640
};
navigator.camera.getPicture(
function (image64) {
$scope.mypicture = image64;
},
function (err) {
$state.go('app.vote');
setTimeout(function () {
console.log(err);
}, 0);
},
options);
}
$scope.upload = function () {
$scope.uploading = true;
var picture = {};
picture.name = $scope.obj.name;
picture.base64 = 'data:image/jpeg;base64,' + $scope.mypicture;
picture.location = $scope.myLocation;
Picture.uploadPicture({picture: picture, uuid: device.uuid}, function (reply) {
var alertPopup = $ionicPopup.alert({
title: 'Picture successfully uploaded'
});
alertPopup.then(function (res) {
$scope.uploading = false;
$state.go('app.trendingMenu');
});
})
}
function takePicture () {
pictureSource = navigator.camera.PictureSourceType.CAMERA;
processPicture()
}
takePicture();
快速浏览一下代码,您可以在控制器的实例化中调用takePicture()函数。 这意味着当您的应用程序启动时,AngularJS已经创建了控制器并调用了该函数。 注释掉该行,您将看到问题停止了。 您需要找到一种在用户导航时而不是在实例化控制器时调用takePicture函数的方法。
编辑:查看路由器的api,您可能对状态更改的onExit和onEnter函数感兴趣:
我得到了答案。 这真的很脏,所以如果有人有更好的解决方案,请告诉我! 基本上,这个想法是从控制器获取状态并附加onEnter函数。(感谢Peter)
谢谢
$state.get('app.uploadPicture').onEnter = function () {
$scope.takePicture();
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.