$ stateProvider onExit如何在角度上工作

时间:2018-10-29 07:08:11

标签: angularjs

嗨,我想在用户离开当前页面时使用html2canvas.js制作缩略图。

所以我在Controller中定义了$ rootScope捕获函数,并在$ stateProvider的onExit状态下调用它。

我想知道onExit状态如何工作,因为捕获目标DOM元素存在问题。

有两种情况需要更换页面。但只有一种情况我不知道有什么区别。

我只是猜测在页面完全更改之前应该是可行的,因为html2canvas需要的DOM元素不仅应存储在内存中,而且还应显示为HTML。在我的情况下,是由于更改页面所需的时间不同。

这就是我想知道onExit如何工作以及我缺少的原因的原因。

出现错误时,我会收到类似的消息

未捕获(承诺)在克隆文档中找到DIV错误

这是我的代码,请给我建议。

StateProvider的一部分

   .state( 'thumb', {
            url: '/thumb/:id',
            views : {
                "@" : {
                    templateUrl: "test.html",
                    controller: "testCtrl"
                }
            },
            onExit: function( $rootScope){
                $rootScope.makeThumbnail();
                $rootScope.$emit("dashboard:exit");
            }
        })

控制器

 $rootScope.makeThumbnail = () => {
        const dashboard = $( '.pd-dashboard-wrap').get( 0);

        html2canvas( dashboard, options).then( canvas => {
         //   dashboard.remove();
            // canvas를 BASE64로 엔코딩 후, BLOB로 변환하기 위한 처리
            const img = canvas.toDataURL( "image/png").replace( /^data:image\/(png|jpg);base64,/,'');
            const blob = b64toBlob( img, "image/png");

            // Mutipart data 전송을 위한 파라미터 생성
            const formdata = new FormData();
            formdata.append( "thumbnailImg", blob, "testfile.png");
            formdata.append( "dashboardid", $scope.dashboard.id);
            const config = {
                        transformRequest: angular.identity,
                        headers:{'content-type' : undefined}
                  }
            $http.post( "/thumbnail", formdata, config).then( function( succ){
                console.log("succ")
            },function(err){
                console.error("썸네일 생성 실패" ,err);
            })

        })
    }

0 个答案:

没有答案