2013-03-20 33 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