当前位置: 首页 > 知识库问答 >
问题:

Angular 4语义UI选项卡仅在刷新后可用

翟柏
2023-03-14

我在组件的template.html中设置了一些语义UI选项卡,如下所示:

<div class="ui top attached tabular menu">
    <a class="item active" data-tab="global" >Global</a>
    <a class="item" data-tab="gen_config" >Config</a>
    <a class="item" data-tab="service" >Service</a>
    <a class="item" data-tab="change" >Change</a>
</div>
<div class="ui bottom attached tab segment active" data-tab="global"> //some stuff// </div>
<div class="ui bottom attached tab segment active" data-tab="gen_config"> //some stuff// </div>
<div class="ui bottom attached tab segment active" data-tab="service"> //some stuff// </div>
<div class="ui bottom attached tab segment active" data-tab="change"> //some stuff// </div>

我实例化了一个自定义JS文件中的选项卡,该文件通过索引加载。html页,并包含以下内容:

$(document).ready(function () {
    $('.ui.dropdown').dropdown();
    $('.top.menu .item').tab();
    $('.tabular.menu .item').tab();
});

每当我路由到包含这些选项卡的组件时,这些选项卡都不起作用。但是,每当我在该组件上刷新页面时,选项卡就会开始工作。发生这种情况有什么原因吗?

我最担心的是,为什么这些选项卡在路由到组件后不起作用,而只在路由后刷新页面后起作用。

我尝试在我的组件onInit方法中实现setTimeout,并在ngAfterViewInit和ngOnInit方法中加载选项卡,但没有成功。

提前谢谢你!

共有1个答案

荀博
2023-03-14

$(文档)。ready()仅在打开/刷新网页时运行一次。引用官方文件:

只有当页面文档对象模型(DOM)准备好让JavaScript代码执行时,$(文档)中包含的代码才会运行。

Angular应用程序是单页应用程序。这意味着当您使用Angular路由器更改应用程序中的组件时,页面不会刷新,只会动态更改内容。

您所看到的行为是因为您最初将应用程序打开到其默认页面,调用了$(文档). Ready()函数,但在此时,您的语义元素不在DOM中。就绪()函数执行,找不到您的元素,因此没有使用设置初始化它们。当您路由到您的组件时,不会再次调用$(文档).就绪(),因为页面没有刷新。只有内的内容

为了避免这个问题,我建议将初始化代码移动到ngOnInit函数中。

export class RoutedComponent implements OnInit {
    ngOnInit() {
        $('.ui.dropdown').dropdown();
        $('.top.menu .item').tab();
        $('.tabular.menu .item').tab();
    }
}

这样,每当您路由到您的组件时,您的初始化代码都将被执行。ngOnInit是一个生命周期挂钩,每次实例化您的组件时都会调用它。

 类似资料:
  • 我的测试包括一个元素列表。单击第一个以打开它,然后从右向左滑动以访问下一个并确保它们不同。 在Android上,它工作得很好,但出于某种原因,驱动程序在进入新页面后似乎没有刷新自己。 如果我试图访问一个文本我一直有元素从第一页即使我在第二或第三元素的列表 Appium iOS中是否有某种刷新页面? 这是我的代码: 寻找我的头衔 刷卡 然后重新制作“查找标题”功能,甚至我的ipad上的“难看的我”屏

  • 我使用ViewPager作为主布局,对于单个寻呼机视图,我使用Fragments。选项卡是操作栏的一部分。我想使用操作栏中的刷新按钮刷新当前选项卡。 我的MainActivity.java 这是我的一个Tabs StartPage.java

  • 本文向大家介绍jQuery UI制作选项卡(tabs),包括了jQuery UI制作选项卡(tabs)的使用技巧和注意事项,需要的朋友参考一下 先看一下效果: Jquery-UI 选项卡的制作实际上是利用锚点链接的原理,实现起来非常的简单。 第一步:引入 jquery 和 jquery-ui 文件。 以下是我的head部分的代码: 第二步:写面板布局。 其中 id="tab"的div用来包裹我们的

  • 问题内容: 我有以下代码: MainActivity.java TabsPagerAdapter.java 我正在制作一个图书馆应用程序,其中导航是通过选项卡进行的,问题是每次我从第三个选项卡转到第一个或第一个至第三个时,选项卡的内容都在刷新,我想防止刷新,任何请帮助 ? 问题答案: 默认情况下,在滑动页面时会重新创建片段。为防止这种情况,您可以尝试以下三种方法之一: 1. 在您的片段中,呼叫。

  • 在html中,当创建选项卡时,我可以将Paris选项卡设置为活动的(在html中用“style=”display:block;“硬编码)。因此,当页面加载时,活动选项卡(Paris)将显示。 问题 当我点击不同的标签(伦敦)并点击刷新,它再次显示巴黎。我如何才能点击刷新并显示当前活动的选项卡的信息?而不是将我带回定义的选项卡。也许javascript或jquery可以解决我的问题? 柱塞视图 示例

  • 我的应用程序中有一个ViewPager,我想随时禁用/允许向右滑动。viewpager中的每个视图都包含ListView。我该怎么做?我正试图这样做: 但视图仍将向右移动一点。有人在解决同样的问题吗?