在我的项目中,我使用ui.bootstrap.tabs。在md和lg屏幕上,标签应该垂直堆叠,但在sm和xs屏幕上,我希望看到它们水平显示。我所需要的就是在垂直属性中设置值,无论是true还是false。当屏幕大小改变时,我对md或lg大小进行了匹配,并设置了属性vertical_tab_appearance = true和sm和lg大小,该属性具有false值,但uib-tabset指令不知道该属性值已更改。
<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>以下是我的屏幕尺寸事件:
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?
发布于 2019-06-23 20:47:59
如果其他人也面临同样的问题,这里有一个解决方案。我决定在模块配置中使用uibTabsetDirective装饰器,并将watcher添加到链接函数的垂直属性中。
.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;
});
});https://stackoverflow.com/questions/56670393
复制相似问题