質問

私はメインコントローラとネストされた指示を持っています。私はこの例を見るには、コントローラと指令の間での通信は機能していません。

基本的には、カスタムディレクティブ(ボタン空カート)からメインコントローラスコープ関数を呼び出します。下のPlunkrの例を参照してください。

plukr:> http://plnkr.co/edit/82stlkkxbk6httnmnqlu ?p=previewud/a.>

私はconsole.log(範囲が適用されます( "emptyCart()"))、何らかの理由で未定義です。

注:$ rootscope.broadcastを避けようとしています...

役に立ちましたか?

解決

親ディレクティブの分離スコープを使用しているので、子ディレクティブはコントローラの範囲にアクセスできません。

親の分離を維持しながら、そのスコープ関数へのアクセスを持つ子ディレクティブを提供するには、親ディレクティブのscope: { ... }プロパティとしてその関数を追加できます。

scope: {
  ...
  emptyCart: '='
}
.

と親指令のビュー宣言の対応する属性に関数名を設定します。

<div ... data-show="showPopup" empty-cart="emptyCart"></div>
.

それからあなたがあなたのプランカーに雇用しようとしたすべての回避策をスキップし、コントローラ機能を発射するために子ディレクティブにng-clickを設定するだけです:

sHTML = "<button ... ng-click='emptyCart()'>Empty cart</button>";
.

デモ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top