Angularj JS上下文菜单

时间:2016-09-04 20:47:09

标签: javascript angularjs twitter-bootstrap

我正在寻找一个上下文菜单指令,它可以告诉我实际点击了什么,以便我可以对它作出反应。

正在玩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>

1 个答案:

答案 0 :(得分:1)

我正在使用相同的东西,并且在进行索引时没有任何问题。 而不是使用

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

将其更改为

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

如果您正在寻找,请告诉我。