简体   繁体   English

使用Angular生成动态的可点击引导标签

[英]Generate dynamical clickable bootstrap tabs with Angular

I'm having problems with displaying on click dynamical generated tabs. 我在点击动态生成的标签上显示时遇到问题。 Here is an example how they look like 这是一个他们看起来像的例子

我的标签

If i click on subscriber or devices (which are static tab), view gets switched, but when i try to display content of dynamical generated tabs (Davor, profi1, profi2, profi3), nothing happens. 如果单击订户或设备(它们是静态选项卡),则视图会切换,但是当我尝试显示动态生成的选项卡(Davor,profi1,profi2,profi3)的内容时,什么也没发生。

This is my HTML code 这是我的HTML代码

<div class="nav-tabs-custom">
            <ul class="nav nav-tabs">
                <li class="active"><a ng-click="tab=1" data-toggle="tab" aria-expanded="true" style="cursor: pointer;">Subscriber</a></li>
                <li class=""><a ng-click="tab=2" data-toggle="tab" aria-expanded="true" style="cursor: pointer;">Devices</a></li>
                <!-- generating one tab for each profile --><li class="" ng-repeat="p in profiles"><a ng-click="tab={{dynamicalContent}}" data-toggle="tab" aria-expanded="true" style="cursor: pointer;">{{p.name}}</a></li>
            </ul>
            <div class="tab-content">
                <!-- subscribers tab -->
                <div class="tab-pane active" ng-show="tab==1" ng-init="tab=1">
                    <form class="form-horizontal">
                        <div class="box-body">
                            <div class="form-group">
                                <label for="Uid" class="col-sm-1 control-label">Uid</label>
                                <div class="col-sm-4">
                                    <input type="text" class="form-control" id="Uid"  value="{{subscriber.subscriberUid}}" disabled>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="Region" class="col-sm-1 control-label">Region</label>
                                <div class="col-sm-4">
                                    <input type="text" class="form-control" id="Region" value="{{subscriber.name}}" disabled>
                                </div>
                            </div>
                        </div><!-- /.box-body -->
                        <div class="box-footer">
                            <button type="submit" class="btn btn-info pull-left">Update</button>
                        </div><!-- /.box-footer -->
                    </form><!-- /.form -->
                </div><!-- /.tab-pane -->
                <!-- subscribers tab -->

                <!-- devices tab -->
                <div class="tab-pane active" ng-show="tab==2">
                    <div class="row">
                        <div class="col-xs-12">
                                <div class="box-body">
                                    <div id="example2_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
                                        <div class="row">
                                            <div class="col-sm-6"></div>
                                            <div class="col-sm-6"></div>
                                        </div>
                                        <div class="row">
                                            <div class="col-sm-12">
                                                <table id="example2" class="table table-bordered table-hover dataTable" role="grid" aria-describedby="example2_info">
                                                    <thead>
                                                        <tr role="row">
                                                            <th class="sorting_asc" tabindex="0" aria-controls="example2" rowspan="1" colspan="1" aria-sort="ascending" aria-label="Rendering engine: activate to sort column descending">Device type</th>
                                                            <th class="sorting" tabindex="0" aria-controls="example2" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">Device UID</th>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <tr role="row" class="odd" ng-repeat="row in subDevice">
                                                            <td>{{row.deviceTypeDesc}}</td>
                                                            <td>{{row.deviceUid}}</td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                        </div>
                                    </div><!-- /.box-body -->
                                </div><!-- /.box -->
                        </div><!-- /.row -->
                    </div><!-- /.tab-pane -->
                </div><!-- /.tab-content -->
                <!-- devices tab -->

                <!-- profiles tab -->
<!-- create div for each profile and link with upper tabs -->
                <div class="tab-pane active" ng-show="tab=={{dynamicalContent}}" ng-repeat="p in profiles">
                    {{p.profileUid}}
                </div><!-- /.tab-content -->
                    <!-- profiles tab -->
.... rest of the HTML

This is my controller, where i fetch all profiles of one subscriber 这是我的控制器,在这里我获取一个订户的所有配置文件

//Get subscriber with all profiles and devices
.controller('subscriber', ['$scope', '$routeParams', 'userEndPointService', 'adminEndPointService', function($scope, $routeParams, userEndPointService, adminEndPointService){
    var subscriberUid = $routeParams.subscriberUid;
    var myRegion= $routeParams.myRegion;
    ///...some code
    userEndPointService.method("getFilteredProfilesV2", {"profileFilter": {"regionUid": myRegion, "subscriberUid": subscriberUid}}).then(function(subscriberProfilesResponse){
        $scope.profiles = subscriberProfilesResponse;
     ///.... rest of the code
})

I know that ng-click="tab={{dynamicalContent}}" lines are wrong, but i would just like pin point my problem location. 我知道ng-click="tab={{dynamicalContent}}"行是错误的,但我只想指出问题的位置。 I saw few examples where developers build some directives, but non of them worked for, so i'm hoping you guy will help me with solution. 我看到了一些开发人员构建一些指令的示例,但没有一个能为他们工作,所以我希望你们能为我提供解决方案。

Thank you in advance 先感谢您

I'd suggest you use UI Bootstrap . 我建议您使用UI Bootstrap It is written by the Angular UI theme, so it's pretty solid. 它是由Angular UI主题编写的,因此非常可靠。

A example how to use the bootstrap tabs with angular can be found here: https://angular-ui.github.io/bootstrap/#/tabs . 可以在此处找到如何使用带有角度的引导程序标签的示例: https : //angular-ui.github.io/bootstrap/#/tabs

This was the solution for my case 这是我的情况的解决方案

HTML HTML

  <li class="" ng-repeat="p in profiles"><a ng-click="setTab(p)" data-toggle="tab" aria-expanded="true" style="cursor: pointer;">{{p.name}}</a></li>

controller 调节器

//Get subscriber with all profiles and devices
.controller('subscriber', ['$scope', '$routeParams', 'userEndPointService', 'adminEndPointService', function($scope, $routeParams, userEndPointService, adminEndPointService){
    var subscriberUid = $routeParams.subscriberUid;
    var myRegion= $routeParams.myRegion;
    ///...some code
    userEndPointService.method("getFilteredProfilesV2", {"profileFilter": {"regionUid": myRegion, "subscriberUid": subscriberUid}}).then(function(subscriberProfilesResponse){
        $scope.profiles = subscriberProfilesResponse;
        $scope.tab = 1;
        $scope.setTab = function(p){
              $scope.tab = p.profileUid;
        }

     ///.... rest of the code
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM