ng-repeat应仅在父div具有id 1的情况下起作用

时间:2015-01-29 10:16:49

标签: javascript jquery angularjs

我有要求我需要在一个地方进行ng-repeat工作。我将定义id应该在哪里工作。我想从控制器

执行此操作

$(#1).(ng-repeat work)类似这样的事情

例如:

 <table id="1">
<tr ng-repeat="item in items">
<td></td> 
</table>

<table id="2">
<tr ng-repeat="item in items">
<td></td> 
</table>

小提琴链接: - http://jsfiddle.net/7MhLd/580/

如何实现这个

由于

3 个答案:

答案 0 :(得分:1)

您有三种选择:

(1)在代码中使用ng-show

<table id="1">
  <tr ng-repeat="item in items" ng-show="/* code to check parent id */">
  <td></td> </tr>
</table>

<table id="2">
  <tr ng-repeat="item in items" ng-show="/* code to check parent id */">
  <td></td> </tr>
</table>

这可能是一个不太合适的人。

(2)仅在需要时使用ng-repeat。如果这是由php代码生成的,请检查$i == 1是否为ng-repeat,如果没有,则不回显ng-repeat。

(3)使用条件{{1}},如this answer

所示 编辑:对于奇怪的清单,对不起,代码不会显示是否以通常的方式完成。

答案 1 :(得分:0)

据我所知,你必须为应该在#1中显示的项目定义新模型,并为要显示的其他项目定义#2。填充第一个模型,数据显示在#1(使用Js),第二个模型相同。然后绑定另一个模型:

<table id="1">
    <tr ng-repeat="item in items1">
    <td>{{item.id}}</td> 
</table>

<table id="2">
    <tr ng-repeat="item in items2">
    <td>{{item.id}}</td> 
</table>

答案 2 :(得分:0)

我认为您的意思是根据要传递的ID显示/隐藏ng-repeat内容。

我有updated fiddle来处理这个问题。

HTML code:

<div ng-controller="MyCtrl">
    <table id="1" border=1>
        <tr ng-repeat="line in lines" ng-show="line.id == 1">
            <td>{{line.text}}</td>
        </tr>
    </table>
    <table id="2" border=1 style="margin-top:10px">
        <tr ng-repeat="line in lines" ng-show="line.id == 2">
            <td>{{line.text}}</td>
        </tr>
    </table>
</div>

JS代码:

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {
    $scope.lines = [{
        id: 1,
        text: 'res1'
    }, {
        id: 1,
        text: 'res2'
    }];
}

UPDATE(没有id属性的json):

Fiddle

HTML代码:

<div ng-controller="MyCtrl">
    <table id="1" border=1>
        <tr ng-repeat="line in lines" ng-show="id == 1">
            <td>{{line.text}}</td>
        </tr>
    </table>
    <table id="2" border=1 style="margin-top:10px">
        <tr ng-repeat="line in lines" ng-show="id == 2">
            <td>{{line.text}}</td>
        </tr>
    </table>
</div>

JS代码:

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});
function MyCtrl($scope) {
    $scope.id = 1;
    $scope.lines = [{
        text: 'res1'
    }, {
        text: 'res2'
    }];
}