2016-09-04 8 views
0

私は実際に何がクリックされたかを示すコンテキストメニューディレクティブを探しています。Angularj JSのコンテキストメニュー

thisで遊んでいましたが、そのモジュールの問題は、クリックされた要素を一意に識別する方法を理解できないことです。

$scope.items.Data = [{Code:'row1', Name:'Name1'},{Code:'row2', Name:'Name2'}] 
$scope.items.Actions = [ 
    { 
     Code: 'Action1', 
     Name: 'First action' 
    }, 
    { 
     Code: 'Action2', 
     Name: 'Second action' 
    } 
] 

var actionList = []; 
for (var i = 0; i < $scope.items.Actions.length; i++) { 

      actionList.push($scope.items.Actions[i].Name, function ($itemScope,$event) { 
       console.log('Action executed', $scope.objectId, $itemScope,$event,$itemScope.$index); 
       // Need access to $scope.items.Actions[i].Code or at least the index of the array 
      }); 
} 
$scope.contextOptions = actionList; 

は、HTML::

<table> 
    <thead> 
     <tr> 
      <td>Code</td> 
      <td>Name</td>  
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="row in items.Data" context-menu="contextOptions"> 
      <td>{{row.Code}}</td> 
      <td>{{row.Name}}</td> 
     </tr> 
    </tbody> 
</table> 
私は、コールバック関数に

コントローラを渡すことができるものが必要になり

:だから私はそれで正しいロジックを行うことができます

+0

HTMLを含めてさらにコードを表示できますか? – cnorthfield

+0

はコードを追加し、基本的にはクリックされたアクションを特定する必要があります – Jester

+0

'$ scope.items'の' Data'プロパティはどこにありますか? – cnorthfield

答えて

1

私は同じことを使用しており、インデックス作成に問題はありません。 代わりの

$scope.items.Actions.forEach(function(action, index){ actionList.push(action.Name, function ($itemScope,$event) { console.log('Action executed', $scope.objectId, $itemScope,$event,index); }); })

for (var i = 0; i < $scope.items.Actions.length; i++) {}

変更、それを使用しては、これはあなたが探しているものであれば、私に教えてください。

+0

Tyは私の問題の解決策ではありません – Jester

関連する問題