1

我有一个文件上传器,我喜欢用 jQuery 编写的 UI。它在更改操作上绑定到我的文件元素。更改操作显示了漂亮的预览和其他很酷的东西。它还会检查 mime 类型是否在我的有效 mime 类型列表中。

此外,我已经连接了 angularJS 并监控了我的表单,并且我编写了许多指令来完成我的所有验证。我尝试为我的文件输入字段编写验证,但由于某种原因它永远不会被触发。做一些谷歌搜索表明它是因为 angular 不支持文件输入类型。

所以我将以下代码直接添加到我的 jQuery 更改操作中:

    angular.element(myinput).scope().$apply(function(scope){
      scope.project.avatar.$setValidity('image',false);
    });

我可以看到有效性在调试器中正确设置为 false,但我所拥有的 ng-class 操作没有看到它。所以除此之外,我有以下标签:

<div ng-class="{error: project.avatar.$invalid}">You did it wrong</div>

该类永远不会被添加。

从 Angular 文档看来, $apply 应该强制刷新模型,以便一切最终恢复同步。那显然没有发生,但我不确定我做错了什么。谷歌搜索找到了很多关于如何从 Angular 中调用 jQuery 的示例,但关于如何从 jQuery 中调用 Angular 的信息却很少。任何建议将不胜感激!

4

2 回答 2

0

你能试试下面的代码吗

<div ng-class="{error: project.avatar.image}">You did it wrong</div>

这里validationErrorKeyis image,因此$error输入类型文件的对象将有一个名为的键,该键image将是truefalse基于您在验证后设置的内容。

于 2013-03-21T03:39:00.063 回答
0

您可能正在寻找的是

标记

<div ng-show="project.avatar.$invalid">You did it wrong</div>

JS

    var valid = some logic;
    angular.element(this).scope().$apply(function(scope){
        scope.project.avatar.$setValidity('image', valid);
    });

演示:小提琴

于 2013-03-21T04:07:34.737 回答