angularjs ----在下面的代码中,我无法获取avatarPath的值

时间:2017-03-20 08:47:40

标签: angularjs

console log

angular.module('Kinder.pages.member')
    .controller('MemberInfoCtrl', MemberInfoCtrl);

function MemberInfoCtrl($scope,MemberModel,Constants,fileReader,$filter,AppUtils,$http,toastr,API) {

    var vm = this;
    vm.member = {};
    vm.member.memberType = "1";
    vm.member.memberSex = "1";
    vm.member.avatarPath = "";

    $scope.getFile = function () {
        fileReader.readAsDataUrl($scope.file, $scope);
        var fileInput = document.getElementById('uploadFile').files[0];
        if(!AppUtils.isUndefinedOrNull(fileInput)){
            var formData=new FormData();
            formData.append("picUrl",fileInput);
            $http({
                ........
            }).success(function(data, status) {
                console.log(data);
                if(data.stat == 'success'){
                    //vm will have avatarPath  value in there
                    console.log(vm);
                    vm.member.avatarPath = data.path;
                    //vm will have avatarPath  value in there
                    console.log(vm);
                }
            }).error(function(data, status) {
            });
        }
    };

    $scope.submit = function() {
        //vm had loss avatarPath ...
        console.log(vm.member);

    };

}
我做的功能是在预览前上传图片,上传到服务器返回路径,分配给vm。

但我无法在$ scope.getFile方法之外获取avatarPath值。

我怀疑是问题范围的问题,但我找不到解决办法,我是角度新手。

那么谁可以告诉我这是什么原因。

我用谷歌翻译来描述上述问题, 我不知道你是否理解我......

无论如何,感谢您抽出宝贵时间浏览这个问题!

1 个答案:

答案 0 :(得分:0)

我解决了!

感谢@JayantPatil提醒!

我在路线中声明控制器

.state('member.info', {
            url: '/info/{memberId:string}',
            params: {
                memberId: null
            },
            templateUrl: 'app/pages/member/info/member-info.html',
            controller: 'MemberInfoCtrl as vm'
        });

在html中,我使用ng-controller

<div class="userpic" ng-controller="MemberInfoCtrl as vm">
   <input type="file" ng-show="false" id="uploadFile" ng-file-select/>
</div>

因为我重复声明控制器,可能是范围不同,

全部是