2

私のディレクティブでは、分離スコープを作成しngModel、コード内に割り当てます。これが私の分離スコープです:

scope: {
  ngModel: '=',
  value: "=",
  placeholder: "@"
}

関数内でlinkに割り当てscope.ngModelます。要素に属性が設定されている場合は問題なく動作しng-modelますが、そうでない場合はエラーが発生します。

Error: Non-assignable model expression: undefined

属性が存在するかどうかを確認するための推奨される方法は何ですか? これを明示的に行う必要がありますか、element.hasAttributeそれとも完全に間違っていますか?

4

1 に答える 1

1

ディレクティブで ngModel-attribute がオプションの場合は、スコープ変数に値を割り当てる前に存在するかどうかを確認する必要があります。そうしないと、Angular でエラーが発生します。or を使用して、存在するかどうif( attrs.ngModel ){...}element.attrs('ngModel')を確認します。

また、ディレクティブ リンク関数でngModelControllerngModelを使用するオプションもあります。これを行うと(オプションの場合)、ngModelController がリンク コントローラー ( ) の 4 番目の引数として使用できるようになります。require:'^ngModel'^link:function(scope,element,attrs,ngModelController){ ... }

于 2013-05-12T14:31:59.113 に答える