【问题标题】:Angularjs 1.6 show/hide section when click on menu items单击菜单项时Angularjs 1.6显示/隐藏部分
【发布时间】:2018-04-02 18:52:28
【问题描述】:

我是 AngularJS 的新手。我有像这样的导航项目的导航栏:

<div class="header-inner">
    <div class="container">
        <div class="row">
            <div class="col-md-12 col-sm-12 col-xs-12">
                <div class="nav-area">
                    <nav class="mainmenu">
                        <div class="collapse navbar-collapse">  
                            <ul class="nav navbar-nav">
                                <li><a href="#">Link 1</a></li>
                                <li><a href="#!/link2">Link 2</a></li>
                                <li><a href="#!/link3">Link 3</a></li>
                                <li><a href="#!/link4">Link 4</a></li>
                                <li><a href="#!/link5">Link 5</a></li>
                                <li><a href="#!/link6">Link 6</a></li>
                            </ul>
                        </div>
                    </nav>
               </div>
           </div>
       </div>
    </div>
</div>

和部分:

<section class="hero-area">
//some text
</section>

如何在单击链接 1 时显示部分,并在单击其余链接时隐藏。默认活动链接是“Link1”,所以我需要在页面启动时显示部分。

感谢您的帮助。

【问题讨论】:

  • 使用 ng-if 或 ng-show 创建切换功能

标签: angularjs


【解决方案1】:

您可能想使用ui-router,它可以解决这个问题等等。它还允许您从书签中恢复活动页面(和其他参数)。

如果您喜欢快速和肮脏,您可以尝试使用范围变量:

<a ng-click="active_section='link 2'">Link 2</a> ... <section ng-show="active_section==='link 2'">

【讨论】:

    【解决方案2】:

    您是否尝试过使用 ng-click + ng-show(或 ng-hide)?

    <div class="header-inner">
        <div class="container">
            <div class="row">
                <div class="col-md-12 col-sm-12 col-xs-12">
                    <div class="nav-area">
                        <nav class="mainmenu">
                            <div class="collapse navbar-collapse">  
                                <ul class="nav navbar-nav">
                                    <li><a href="#" data-ng-click="showSection = 1">Link 1</a></li>
                                    <li><a href="#!/link2" data-ng-click="showSection = 2">Link 2</a></li>
                                    <li><a href="#!/link3" data-ng-click="showSection = 3">Link 3</a></li>
                                    <li><a href="#!/link4" data-ng-click="showSection = 4">Link 4</a></li>
                                    <li><a href="#!/link5" data-ng-click="showSection = 5">Link 5</a></li>
                                    <li><a href="#!/link6" data-ng-click="showSection = 6">Link 6</a></li>
                                </ul>
                            </div>
                        </nav>
                   </div>
               </div>
           </div>
        </div>
    </div>
    
    
    <section class="hero-area" data-ng-init="showSection = 1" data-ng-show="showSection === 1">
    //some text
    </section>
    

    【讨论】:

    • 它不起作用,因为我想在开始网站上显示该部分。
    • 理论上,您应该在控制器内部建立一个基值(假设 AnuglarJS 1.x)。您也可以在视图中的某处使用 data-ng-init="showSection = 1" (不确定它是否被认为是“最佳实践”,我欢迎任何其他人发表评论)。将通过添加 ng-init 来修改答案..
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多