4

タグ入力用の jquery プラグインを使用して、標準のテキスト入力を装飾しています。これは、HTML のテキスト入力を、ユーザーがタグ名を書き込んで Enter キーを押して個別のグラフィカル タグに変換できるテキスト領域に置き換えます。( http://xoxco.com/projects/code/tagsinput/でデモを参照)

元のテキスト入力に ngModel ディレクティブを配置しています。

プラグインから変更ハンドラーをリッスンし、元のテキスト入力 HTML タグから ngModel 属性を解析し、スコープを直接更新することで、タグ入力フィールドで行われた変更でスコープを更新し続けることができます。

ただし、問題は、Angular がモデルの変更を検出し、バインドを使用してビューを更新するときに、元のテキスト入力に値を設定しているため、プラグインの更新時期を知るためにバインドできるイベントが発生しないことです。 "change" はユーザー入力によってのみ発生するためです。

デフォルトの ngModel ディレクティブの動作を変更して、特にモデルからビューへのバインディングを処理しているときに、イベントを発生させたり、指定した関数を実行したりする方法はありますか?

4

1 に答える 1

1

ngModel.$render 関数をオーバーライドする必要があります

ディレクティブ.tabbable = 関数() {
  戻る {
    require: 'ng-モデル',
    リンク:関数(スコープ、要素、属性、ngModel){
      // jQuery ウィジェットを登録する作業を行います
      ngModel.$render = function() {
        // ngModel.$viewValue を読み取り、jQuery ウィジェットを更新します。
      }
    }
  };
};
于 2012-05-03T22:54:25.070 に答える