3

ngModel コントローラーにアクセスしたい (後で setValidity を使用してカスタム入力フィールドを検証するため)。ただし、ディレクティブを (クラスではなく) 属性として使用したい場合、replaceWith 関数は、It can't find ngModel controller というエラーをスローします。ここでフィドルを作成しました:

jsfiddle.net/6HcGS/396

誰でも私を助けることができますか?

これは私の最初の質問に関連しています:

コンパイル関数でhtmlを置き換えるデータバインディングカスタムディレクティブangular

4

2 に答える 2

2
<input zippy ng-model="title">

zippy と ngModel はどちらも、特定の順序でレンダリングされるディレクティブです。この場合、zippy は ngModel の前にレンダリングされます。Maxim Shoustin が提案したようにディレクティブを並べ替えるか、次priorityのようにディレクティブ作成関数に属性を指定してレンダリング順序を指定できます。

  .directive('zippy', function($compile){
    return {
      restrict: 'A',
      priority: -1,
      replace: true,
      ...

デフォルトの優先度は 0 です。優先度の高いディレクティブが最初にレンダリングされます。

于 2013-10-26T13:20:39.980 に答える
1

その代わり

<input zippy ng-model="title"/>

次のような後に属性を書き込んでみてくださいng-model

 <input  ng-model="title" zippy/>

ディレクティブのzippy前にロードするのは興味深いです。ng-model

bekite が言うように、セットpriority: -1

デモFiddle

于 2013-10-26T11:41:24.990 に答える