【问题标题】:Making a switch statement on my partials angularjs在我的部分 angularjs 上做一个 switch 语句
【发布时间】:2013-08-24 08:09:44
【问题描述】:

我遇到了问题,我无法让我的 ng-switch 处理我的部分。我要做的是上传一张图片,但在上传之前,我必须先检查包含的图片大小是否没有达到 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 语句中起作用。 :(

【问题讨论】:

  • 你应该使用onchange而不是ng-change="validateAvatar(this.files)"
  • 在您的代码中,函数也是嵌套的。将uploadAvatar 移出validateAvatar
  • @Codezilla,当我从 onchange 更改为 ng-change 时给了我一个错误。错误:没有控制器:ngModel

标签: angularjs ng-switch


【解决方案1】:

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

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

【讨论】:

  • 哦,现在可以了。这是我第一次使用 $apply。 angularjs 中的文档读起来很吓人。 @_@。同样通过使 $scope.filemaxsize = 25 * 1024 那么我的部分表达式将只是文件大小
  • @WonderingCoder:是的。
  • 这很奇怪,当我刷新页面只是为了测试时它正在工作。但最初我的应用程序是这样流动的,当登录 - > 个人资料和从我上传头像的个人资料页面时。我必须单击两次选择文件按钮才能显示上传按钮。为什么会这样?
  • @WonderingCoder: $scope.filemaxsize 只在这里定义吗?我认为这应该是顶级的。也许您在$scope.filesize$scope.filesize 之间插入$scope.$apply()
  • 哦,是的!它现在工作。哇,谢谢很多人!顺便说一句,这不在主题范围内。由于我正在构建一个 SPA 网站,因此不允许在页面之间进行刷新,对吗?但是如果用户刷新页面,你怎么处理呢?你明白我的意思吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多