9

クリックして編集するディレクティブを作成していますが、分離されたディレクティブで親スコープにアクセスする方法を理解するのに問題があります。

例: http://jsfiddle.net/ADukg/3591/

scope: {},

スコープを削除してスコープを「分離」すると機能します: {}; しかし、分離スコープが必要です。

アップデート:

追加完了

controller: 'FormCtrl',

ディレクティブに。http://jsfiddle.net/ADukg/3601/を参照してください

4

2 に答える 2

18

アイソレート スコープのプロパティを使用$parentして親スコープに直接アクセスすることもできますが、通常は属性を使用して、ディレクティブが作業を行うために必要な親スコープ プロパティを指定します。

ディレクティブで親スコープのプロパティを変更する必要がある場合は、=(双方向オブジェクト) でバインドします。ディレクティブで親スコープ プロパティの文字列値のみが必要な場合は、@(一方向文字列) でバインドします。

于 2013-07-24T19:03:33.093 に答える
2

「string」、「long」などのプリミティブ型の属性を渡すと、指定されたソリューションは機能しません。双方向ビンギングはオブジェクトでのみ機能します。

すべてのスコープ オブジェクトには、その親スコープを参照する $parent という特別なプロパティが含まれています。分離スコープには $parent プロパティもあります。ただし、それは囲んでいるコントローラー/ディレクティブのスコープを参照しています。

プリミティブ属性で機能させるには、ディレクティブ テンプレートをコントローラーにバインドできます。これにより、ディレクティブがその親に公開され、$parent でアクセスできるようになります。

2番目の解決策は、分離スコープを作成しないことです(ただし、それがあなたの目標ではないと思います)。

于 2016-09-08T14:07:00.207 に答える