给定一个像这样的json:
{ "name": "john" "colours": [{"id": 1, "name": "green"},{"id": 2, "name": "blue"}] }
和两个常规的html输入:
<input type="text" name="name" /> <input type="text" name="color" /> <input type="submit" value="submit" />
我需要建立一个包含所有可能变化形式的表,例如:
John green John blue
这意味着,如果用户继续通过输入添加值,则将出现建立新变体的新行,例如:
我还需要有可用的id来处理它,并且当我使用输入(例如“Peter”“Black”)添加新值时,我需要像自动递增那样动态地自动填充id(颜色id)mysql,结果如下:
{ "colours": […...{"id": 3, "name": "black"}] }
那可能吗?我可以使用哪些选项进行角度操作?我仍在以jQuery的方式思考,我想以有角度的方式进行。
我看了看hg-repeat,并使用了它,但是我没有弄清楚如何实现预期的结果,我想到的唯一一件事就是使用嵌套的ng-repeats,但是没有用。
非常感谢
只想与我到目前为止使用的内容分享,以节省您的时间。
这是 硬编码标头 和 _动态标头的_示例(以防不关心数据结构的情况)。在这两种情况下,我都写了一些简单的指令:customSort
customSort
.directive("customSort", function() { return { restrict: 'A', transclude: true, scope: { order: '=', sort: '=' }, template : ' <a ng-click="sort_by(order)" style="color: #555555;">'+ ' <span ng-transclude></span>'+ ' <i ng-class="selectedCls(order)"></i>'+ '</a>', link: function(scope) { // change sorting order scope.sort_by = function(newSortingOrder) { var sort = scope.sort; if (sort.sortingOrder == newSortingOrder){ sort.reverse = !sort.reverse; } sort.sortingOrder = newSortingOrder; }; scope.selectedCls = function(column) { if(column == scope.sort.sortingOrder){ return ('icon-chevron-' + ((scope.sort.reverse) ? 'down' : 'up')); } else{ return'icon-sort' } }; }// end link } });
我用单身 ng-repeat
ng-repeat
这是一个很好的示例**[Fiddle](http://jsfiddle.net/SAWsA/1758/)**(请注意,没有jQuery库! )
**[Fiddle](http://jsfiddle.net/SAWsA/1758/)**
<tbody> <tr ng-repeat="item in pagedItems[currentPage] | orderBy:sortingOrder:reverse"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.description}}</td> <td>{{item.field3}}</td> <td>{{item.field4}}</td> <td>{{item.field5}}</td> </tr> </tbody>
演示2: **[Fiddle](http://jsfiddle.net/SAWsA/2281/)**
**[Fiddle](http://jsfiddle.net/SAWsA/2281/)**
HTML
<table class="table table-striped table-condensed table-hover"> <thead> <tr> <th ng-repeat="header in table_headers" class="{{header.name}}" custom-sort order="header.name" sort="sort" >{{ header.name }} </th> </tr> </thead> <tfoot> <td colspan="6"> <div class="pagination pull-right"> <ul> <li ng-class="{disabled: currentPage == 0}"> <a href ng-click="prevPage()">« Prev</a> </li> <li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) " ng-class="{active: n == currentPage}" ng-click="setPage()"> <a href ng-bind="n + 1">1</a> </li> <li ng-class="{disabled: (currentPage) == pagedItems.length - 1}"> <a href ng-click="nextPage()">Next »</a> </li> </ul> </div> </td> </tfoot> <pre>pagedItems.length: {{pagedItems.length|json}}</pre> <pre>currentPage: {{currentPage|json}}</pre> <pre>currentPage: {{sort|json}}</pre> <tbody> <tr ng-repeat="item in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse"> <td ng-repeat="val in item" ng-bind-html-unsafe="item[table_headers[$index].name]"></td> </tr> </tbody> </table>
附带说明:
的ng-bind-html-unsafe已过时,所以就用它仅适用于演示(第二示例)。欢迎您编辑。
ng-bind-html-unsafe