2013-03-20 35 views
1

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

此外,我有angularJS连线和监控我的表单,我写了一些指令,做我所有的验证。我试图为我的文件输入字段写一个验证,但由于某种原因,它永远不会被解雇。做一些谷歌搜索表明它的角度不支持文件输入类型。

所以我直接添加以下代码到我的jQuery的变化采取行动:

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

我可以看到,有效性,正确越来越设置为false在调试器,但纳克级的动作,我有不看到它。所以在此之外,我有以下标签:

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

该类永远不会被添加。

从Angular文档看来,$ apply似乎应该强制对模型进行刷新,以便所有内容都重新同步。那显然没有发生,但我不确定我做错了什么。谷歌搜索发现了很多关于如何从Angular内部调用jQuery的例子,但是关于如何在jQuery中调用Angular的信息很少。任何意见将不胜感激!

+0

您能查看'

You did it wrong {{project.avatar.$invalid}}
' – 2013-03-21 03:50:10

+0

这似乎是工作的罚款对我来说http://jsfiddle.net/arunpjohny/8UaML/1/ – 2013-03-21 04:05:23

回答

0

可以尝试用下面的代码

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

这里validationErrorKeyimage,所以输入类型文件的$error对象有一个键调image根据您所设置的truefalse这将是经过验证。

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); 
    }); 

演示:Fiddle