如何将ng-repeat索引发送到另一个ng-repeat

时间:2017-10-05 06:59:21

标签: angularjs

我有一个数组通话"菜单"

var Menu = [
        "url" : "#",
        "type" : "F",
        "id" : "F00001",
        "name" : "CUST",
        "child" : [ {
            "type" : "P",
            "id" : "C00001",
            "name" : "CUST INFO"
        }, {
            "type" : "P",
            "id" : "C00002",
            "name" : "CUST BACKGROUND"
        } ]

当TopMenuBar点击" CUST"我希望select索引可以像下面的代码一样放入另一个ng-repeat

<div id"TopMenuBar">    
    <ul>
        <li ng-repeat="row in Menu" >
            <a ng-click="row.type == 'P' ? GeneratePage({'txnName':row.name,'txnId':row.id,'txnPath':[row.name],'txnURL':[row.url]}) : angular.noop >{{row.name}}</a></span>
        </li>
    </ul>
 </div>
 <div id="sideMenuContainer">
    <ul>
        <li ng-repeat="row2 in Menu[index].child" >
            <a ng-click="row.type == 'P' ? GeneratePage({'txnName':row2.name,'txnId':row2.id,'txnPath':[row2.name],'txnURL':[row2.url]}) : angular.noop >{{row2.name}}</a></span>
        </li>
    </ul>
</div>

感谢答案

2 个答案:

答案 0 :(得分:1)

您无法访问重复容器外的ng-repeat索引。出于单击事件的目的,您只需传递对象并将重复对象设置为传递的对象,如下所示。

ng-repeat语句中添加click事件,并将该对象传递给方法。

<div id"TopMenuBar">    
    <ul>
        <li ng-repeat="row in Menu" ng-click="selectMenu(row)">
            <a ng-click="row.type == 'P' ? GeneratePage({'txnName':row.name,'txnId':row.id,'txnPath':[row.name],'txnURL':[row.url]}) : angular.noop >{{row.name}}</a></span>
        </li>
    </ul>
 </div>

在控制器内部将事件定义为

$scope.selectMenu = function(menu) {
    $scope.selectedMenu = munu;
}

对于第二个ng-repeat选项,将其定义为

<div id="sideMenuContainer">
    <ul>
        <li ng-repeat="row2 in selectedMenu.child" >
            <a ng-click="row.type == 'P' ? GeneratePage({'txnName':row2.name,'txnId':row2.id,'txnPath':[row2.name],'txnURL':[row2.url]}) : angular.noop >{{row2.name}}</a></span>
        </li>
    </ul>
</div>

repeat语句中的selectedMenu将是第一个重复语句中的选定菜单。希望这对你有用

答案 1 :(得分:0)

试试这样:

<div class="container1">
    <ul>
        <li ng-repeat="menu in menus track by $index">
            <a ng-click="child($index)">{{menu.name}}</a>
        </li>
    </ul>
</div>
<div class="container1">
    <ul>
        <li ng-repeat="menu in menus2 track by $index">
            <a>{{menu.name}}</a>
        </li>
    </ul>
</div>

$scope.child = function(index) {
    $scope.menus2 = $scope.menus[index].child;
}