我开发了一个页面,当所有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添加它时,它却没有。控制台日志中没有错误。
如何调试此问题?任何人都可以提供的方向将不胜感激。
提前谢谢!
答案 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()是关键。谢谢你们指点道路!非常感谢研究方向的帮助。 =)