繁体   English   中英

控制器中的角度用户界面离子触发功能

[英]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函数感兴趣:

https://github.com/angular-ui/ui-router/wiki

我得到了答案。 这真的很脏,所以如果有人有更好的解决方案,请告诉我! 基本上,这个想法是从控制器获取状态并附加onEnter函数。(感谢Peter)

谢谢

 $state.get('app.uploadPicture').onEnter = function () {
                $scope.takePicture();
 }; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM