【发布时间】:2021-02-10 23:00:45
【问题描述】:
我有一个引导下拉菜单。当我从下拉菜单中选择一个项目时,按钮的文本会更改为所选项目的文本值(在此答案的帮助下实现:https://stackoverflow.com/a/60029507/7061548)。
每当从下拉菜单中选择一个项目时,我都必须重新加载窗口,因为我更新了会话存储。这在页面重新加载后工作正常。但是在重新加载之前我有一个问题。当我单击下拉菜单中的某个项目时,菜单按钮会变为全绿色,并且按钮文本会在页面重新加载之前消失。
我发现如果我从按钮中删除类“btn-outline-success”,问题似乎就消失了。我曾尝试在各种元素上应用 css 样式,但未能成功解决问题。
这是我的代码:
HTML:
<div class="m-dropdown">
<button type="button" class="btn btn-outline-succes m-btn dropdown-toggle" data-toggle="dropdown" aria-haspopup="true">
{{selectedColor}}
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#" (click)="setColorGreen('Green')">Green</a>
<a class="dropdown-item" href="#" (click)="setColorBlue('Blue')">Blue</a>
</div>
</div>
TS:
...
selectedColor: string;
ngOnInit() {
this.selectedColor = "Green";
}
setColorGreen(color: string) {
this.selectedColor = "Green";
...
window.location.reload();
}
setColorBlue(color: string) {
this.selectedColor = "Blue";
...
window.location.reload();
}
...
【问题讨论】:
-
我怀疑你是否真的需要在选择一个选项时重新加载窗口。您不能在选择更改时触发 AJAX 吗?
-
与您的问题无关,但您将绿色作为静态发送,此功能不使用此颜色,仅将 selectedColor 更改为绿色。你有2 fn。 (click)="setColorGreen('Green') 和 (click)="setColorBlue('Blue')" 。你不需要 2 fn。你可以简单地发送 (click)="setColor('Blue') " 和 (click)="setColor('Green')" 和你的 .ts setColor(color: string) { this.selectedColor = color; ... window.location.reload(); }
-
@Chiperific 我想我需要重新加载,因为我必须更新本地存储然后更新页面。 :)
-
@TalhaAkca 谢谢你,我的代码现在干净多了 :)
-
@Fth,如果这是您知道的策略,那没关系,但几乎所有现代语言和框架都具有 AJAX 和 JSON 功能,因此您不必重新加载页面。整个页面重新加载通常比使用 AJAX 向服务器发送一些数据、处理数据库更新以及返回一些您可以在客户端处理的 JSON 慢得多。
标签: html css angular twitter-bootstrap