AngularJs(ng-repeat tr)+(ng-repeat td)+(ng-switch td)+(ng-repeat x)

时间:2013-11-11 11:30:30

标签: angularjs html-table angularjs-ng-repeat cell ng-switch

     <tr ng-repeat="rows in DATA1">
            <INEEDSOMETAG ng-repeat="(key,part) in rows" ng-switch on="key">

                <td ng-switch-when="ABCD" ng-repeat="piece in part">{{piece}}</td>
                <td ng-switch-default>{{part}}</td>

            </INEEDSOMETAG>
      </tr>

这个信息是从一个json对象中解析出来的,其中一个“部分”是另一个对象,我需要迭代它,但是将它们显示为另一个'td'。

显然,一种方法是提供某种动态标签(如果可能的话)('INEEDSOMETAG')

以下json:

{obj1:  {
        ABCD:{
                x:'x',
                y:'y'
                },
        a:'a',
        b:'b',
        c:'c',
        d:'d',
    },

obj2:{
        ABCD:{
                z:'x',
                f:'y'
                },
        a:'a',
        b:'b',
        c:'c',
        d:'d',
    },

}

添加了一个jsfiddle:http://jsfiddle.net/kDF5L/1/

1 个答案:

答案 0 :(得分:0)

开始时有几个问题:

  1. 您的<span>代码未正确平衡;它们都以</td>结束。
  2. $scope.js无效Javascript。对象必须包含键/值对,因此我认为您应该使用对象的数组
  3. 如果你真的想这样做(并且正如评论员所说的那样,这看起来不像是最有效的方法来完成你想做的事情) - 我做了一个JSFiddle演示了如何让代码开始做某事。

    如果您仍然对制作像<i-need-some-tag>这样的自定义元素感兴趣(我假设您现在不需要,虽然知道如何做到这一点对于框架来说非常重要),需要写一个custom directive。如何 超出了这个问题的范围,但Stack Overflow,Google和AngularJS文档上有很多关于如何执行此操作的资源。你会从这样的事情开始:

    .directive("INeedSomeTag", function() {
        return {
            restrict: 'E', // used like <i-need-some-tag>
            replace: true,
            template: `<td>...</td>` 
        }
    });
    

    like charlietfl said,您可以将<td>元素传入指令定义对象的template属性。