javascript - 从 ng-include html 访问元素

标签 javascript html css angularjs

我有一个 html,它包含在由几个不同 Controller 控制的几个 html 中。我想在每个 Controller 中通过 id 访问包含的 html 中的元素。我将在每个 html 中包含的 html 下方发布:

<ul class="nav menu" >
    <li id="tom_nav_bar"><a href="/#tom">
        <svg class="glyph stroked dashboard-dial">
            <use xlink:href="#stroked-dashboard-dial"></use>
        </svg>
        BEX Dashboard</a></li>
    <li id="sonar_nav_bar"><a href="#/sonar">
        <svg class="glyph stroked chevron right">
            <use xlink:href="#stroked-chevron-right"/>
        </svg>
        Sonar</a></li>
    <li id="teamcity_nav_bar"><a href="/#teamcity">
        <svg class="glyph stroked chevron right">
            <use xlink:href="#stroked-chevron-right"/>
        </svg>
        TeamCity</a></li>
    <li id="kpi_definitions_nav_bar"><a href="#/kpi_definitions">
        <svg class="glyph stroked chevron right">
            <use xlink:href="#stroked-chevron-right"/>
        </svg>
        Kpi Definitions</a></li>
    <li id="credit_risk_custom_report_nav_bar"><a href="#/department_custom_report">
        <svg class="glyph stroked chevron right">
            <use xlink:href="#stroked-chevron-right"/>
        </svg>
        CREDITRISK Custom Report (beta)</a></li>
</ul>

让我们将代码命名为 html :navbar.html。现在,我将从包含上述代码的 4 个 html 中发布一个:

<div ng-include src="'navbar.html'" class="col-sm-3 col-lg-2 sidebar"></div>

现在在我的 Controller 中,我想访问例如“tom_nav_bar”id,但我做不到:

document.getElementById("tom_nav_bar").className = "active";

此处 getElementById 返回 null。

最佳答案

您不应该从 Controller 访问 DOM。这几乎无法测试,难以重构并增加了困惑,因为 DOM 操作与表示逻辑混合在一起

我建议您使用以下模板创建一个简单的指令“insert-navbar”:

<div ng-include src="'navbar.html'" class="col-sm-3 col-lg-2 sidebar"></div>

然后在每个需要用到的地方都这样使用:

<insert-navbar>

然后,在该指令的 link 函数中,您应该能够像这样访问该元素:

link: function(scope, element) {
  element[0].querySelector('#tom_nav_bar')
}

关于javascript - 从 ng-include html 访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397140/

相关文章:

javascript - 单击时更改另一个元素的 Z 索引

jquery - 无法针对 jQuery fadeToggle() 的特定 CSS 类

javascript - KnockoutJS 按特定属性过滤

javascript - Backbone : Navigate function not working

javascript - 如何在一段时间后隐藏和显示我的功能?

javascript - 提交时验证表单时出现问题?

html - 是否可以在 CSS 中读取 HTML?

javascript - 内容(图片)超出父 div

javascript - 使背景图像可缩放到窗口

css - SCSS : Add an if statement inside an Extend