首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更改uib-tabset属性中的值

动态更改uib-tabset属性中的值
EN

Stack Overflow用户
提问于 2019-06-19 22:43:14
回答 1查看 89关注 0票数 1

在我的项目中,我使用ui.bootstrap.tabs。在mdlg屏幕上,标签应该垂直堆叠,但在smxs屏幕上,我希望看到它们水平显示。我所需要的就是在垂直属性中设置值,无论是true还是false。当屏幕大小改变时,我对mdlg大小进行了匹配,并设置了属性vertical_tab_appearance = truesmlg大小,该属性具有false值,但uib-tabset指令不知道该属性值已更改。

代码语言:javascript
复制
 <div class="col-md-2 small hidden-print">
        <div ng-model="value">
            <uib-tabset vertical="vertical_tab_appearance" type="pills"> 
                <uib-tab></uib-tab>
            </uib-tabset> 
        </div>
</div>

以下是我的屏幕尺寸事件:

代码语言:javascript
复制
 screenSize.on('md, lg', function (match) {
   if (match) {
       $scope.vertical_tab_appearance = true;
   }
  });

 screenSize.on('sm, xs', function (match) {
   if (match) {
       $scope.vertical_tab_appearance = false;
    }
  });

我可以在这里做点什么吗?或者在这种情况下我应该使用ng-if

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-23 20:47:59

如果其他人也面临同样的问题,这里有一个解决方案。我决定在模块配置中使用uibTabsetDirective装饰器,并将watcher添加到链接函数的垂直属性中。

代码语言:javascript
复制
.config(function ($provide) {
            $provide.decorator('uibTabsetDirective', function($delegate) {
                var directive, link, scope;
                directive = $delegate[0];
                link = directive.link;
                scope = directive.scope;
                scope['vertical'] = '=';
                directive.compile = function() {
                  return function Link(scope, element, attrs, ctrls) {
                    scope.$watch(attrs.vertical, function() {
                        console.log(scope.vertical);
                    });

                    return link.apply(this, arguments);
                  };
                };
                return $delegate;
            });
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56670393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档