1

jQuery で記述された UI 用に気に入ったファイル アップローダーがあります。変更アクションでファイル要素にバインドされています。change アクションは、気の利いたプレビューやその他のクールなものを表示します。また、MIME タイプが有効な MIME タイプのリストにあるかどうかもチェックします。

さらに、angularJS を接続してフォームを監視し、すべての検証を行うディレクティブを多数作成しました。ファイル入力フィールドの検証を作成しようとしましたが、何らかの理由で起動されません。いくつかのグーグルを行うと、角度がファイル入力タイプをサポートしていないためであることが示唆されます。

そこで、次のコードを 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 docs から、 $apply はモデルの更新を強制することになっていたため、すべてが同期されたように見えました。それは明らかに起こっていませんが、何が間違っているのかわかりません。グーグルで検索すると、Angular 内から jQuery を呼び出す方法の例がたくさん見つかりましたが、jQuery 内から Angular を呼び出す方法に関する情報はほとんどありませんでした。どんなアドバイスでも大歓迎です!

4

2 に答える 2

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 に答える
0

以下のコードで試していただけますか

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

ここでvalidationErrorKeyimageであるため、$error入力タイプ ファイルのオブジェクトには、または検証後に設定した内容に基づいて呼び出さimageれるキーがあります。truefalse

于 2013-03-21T03:39:00.063 に答える