链接不再适用于Angular JS

时间:2015-01-05 05:43:40

标签: javascript angularjs angularjs-directive

我开发了一个页面,当所有HTML都包含在单个HTML页面中时,该页面可以正常运行。但是,现在我已经让页面看起来很棒了,我希望将其分解为包含,这样我就可以在应用程序中创建更多页面,而无需重新创建菜单等。

一位代码是菜单,其中包含由链接激活的下拉菜单。

我在Angular JS中使用自定义指令来打破包含,所以我的菜单看起来像这样:

的index.html:

<sidebar-standard></sidebar-standard>

包括/侧边栏-standard.html:

<li>
    <a href="javascript:;">my link</a>
    <ul class="sub-menu">
        <li>
            <a href="anotherlink.html">test</a>
        </li>
    </ul>
</li>

app.js:

app.directive('sidebarStandard', function() {
    return {
        restrict: 'E', // E = Element Include
        templateUrl: '/includes/sidebar-standard.html'
    };
});

这很有效,我的侧边栏也包含在内,但javascript下拉菜单不再起作用。当我将HTML直接放入index.html时,一切正常,但是当我通过Angular添加它时,它却没有。控制台日志中没有错误。

如何调试此问题?任何人都可以提供的方向将不胜感激。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

要跟进这个问题,我必须做的是一些评论建议:包括指令的点击控制功能。在查看了很多其他人的代码之后,看到这个应用程序的前一个作者做了什么,我最终从使用指令变为使用控制器。

所以,index.html:

<div data-ng-include="'/includes/sidebar-standard.html'" data-ng-controller="SidebarController"></div>

app.js

app.controller('SidebarController', ['$scope', function($scope) {
    $scope.$on('$includeContentLoaded', function() {
        Layout.initSidebar();
    });
}]);

传递initSidebar()是关键。谢谢你们指点道路!非常感谢研究方向的帮助。 =)