2017-01-23 7 views
1

ng-clickアクションテンプレートを使用して動的メニューを作成していますが、DBに設定されています。角度1.5.8コンポーネント、ng-repeatで親コンテキストを取得

<ul class="dropdown-menu dropdown-menu-right" id="widget-{{$ctrl.id}}-context-menu"> 
    <li ng-repeat="Menu in $ctrl.menu"> 
     <a href="" ng-click="$parent.evaluateFn(Menu.Template)">{{Menu.Name}}</a> 
    </li> 
</ul> 
  1. 私はテンプレート文字列解析できるように、どのように私はNGリピートから親コンテキストへの参照を取得することができます(例えば「$ ctrl.handleClick(」ABC「)」)クリックイベントを作成します? $ parentと$ ctrlはng-repeat内で動作していません。
  2. 文字列をng-clickイベントに変換する正しい方法は何ですか? 私はコンポーネントと

答えて

0

$scopeに何をすべきは、私はあなたがそのようにアクセスすることができ、あなたはいけないことを確認していない、常に孤立しています。あなたがする必要があるのは、親コントローラ/コンポーネントから関数をバインドすることです。親からの機能のバインド

<ul class="dropdown-menu dropdown-menu-right" id="widget-{{$ctrl.id}}-context-menu"> 
    <li ng-repeat="Menu in $ctrl.menu"> 
     <a href="" ng-click="$ctrl.action(Menu.Template)">{{Menu.Name}}</a> 
    </li> 
</ul> 

bindings: { 
    action: '&' 
} 

は、あなたのマークアップでそれを使用します。

<my-component action="$ctrl.evaluateFn"> 

コンポーネントへの結合追加($ctrlはここで親です)

actionの代わりに任意の値を使用できます。ここで

https://docs.angularjs.org/guide/component

+0

NG-クリック=「$のctrl.action(Menu.Templateを)」私はコンポーネントコントローラではなく、どこのページ内の関数で関数を呼び出す必要があるので、私のために動作しません。コンポーネントが消費されます。問題は、ng-repeatがそのブロック内に別のコンテキストを作成し、コントローラを参照するために "$ ctrl"を使用できないことです。私は "$親"を試みましたが、動作しませんでした。 –

+0

'ng-repeat'の中で' $ ctrl'を使うことができます。これで問題が解決しない場合は、他の問題があります。コードを提供してください。 – kuhnroyal

+0

ありがとうございます。それは私の間違いでした。 $ ctrlは現在動作しています。 –

関連する問題