在我的partials angularjs上做一个switch语句

在我的partials angularjs上做一个switch语句,angularjs,ng-switch,Angularjs,Ng Switch,我有一个问题,我无法让我的ng开关工作在我的部分。我想做的是上传一张图片,但在上传之前,我必须先检查图片大小是否达到25kb 这是我的控制器代码: $scope.validateAvatar = function(files) { var fd = new FormData(); $scope.filesize = files[0].size; $scope.filemaxsize = 25; //Take the first selected file fd.appen

我有一个问题,我无法让我的ng开关工作在我的部分。我想做的是上传一张图片,但在上传之前,我必须先检查图片大小是否达到25kb

这是我的控制器代码:

$scope.validateAvatar = function(files) {
    var fd = new FormData();
    $scope.filesize = files[0].size;
    $scope.filemaxsize = 25;
//Take the first selected file
fd.append("file", files[0]);

    $scope.uploadAvatar = function() {
        Api.uploadAvatar($scope.main.user.email, fd)
        .then(function(result) {
            console.log(result.data);
        }, function(result) {
            console.log(result);
        })
    };
};
和我的部分代码:

<form data-ng-submit="uploadAvatar()">
    <input type="file" name="file" onchange="angular.element(this).scope().validateAvatar(this.files)"/>

    <div ng-switch on="filesize / 1024 < filemaxsize">
        <div ng-switch-when="true">
            <input type="submit" value="Upload Avatar">
        </div>
        <div ng-switch-default>
            Please choose you avatar.
        </div>
    </div>

</form>

请选择你的化身。

另外,在检查图像文件大小时,您认为我的验证是否足够,比如说,如果包含的图像大小为20MB,我的验证是否仍能捕获它?首先很抱歉,我没能让它先运行switch语句:(

手动更改
$scope.filesize
后,需要调用
$scope.$apply()


顺便说一句,为什么不让
$scope.filemaxsize=25*1024;

而不是
onchange
您应该使用
ng change=“validateAvatar(this.files)”
在你的代码中,函数也是嵌套的。当我从onchange更改为ng时,将
uploadAvatar
移出
validateAvatar
@Codezilla,当我从onchange更改为ng时,change给了我一个eror。错误:没有控制器:ngModel哦,好了,现在可以工作了。这是我第一次使用$apply。angularjs中的文档读起来很可怕。@@@同样通过制作$scope.filemaxsize=25*1024那么我的部分表达式就是filesize@WonderingCoder:是的。这很奇怪,当我刷新页面只是为了测试时,它就起作用了。但最初我的应用程序是这样流动的,当登录->配置文件时,从我上传头像的配置文件页面。我必须单击两次选择文件按钮,上传按钮才能启动出现。为什么是这样?@WonderingCoder:这里只定义了
$scope.filemaxsize
吗?我想这应该是顶级的。也许你可以插入
$scope.$apply()
介于
$scope.filesize
$scope.filesize
之间?哦,是的!现在可以了。哇,谢谢很多人!顺便说一下,这不是主题。因为我正在建立一个SPA网站,页面之间不允许刷新,对吗?但是如果用户刷新页面,你怎么处理?你明白我的意思了吗?