link 在被 Angular JS 包含时不再有效
link no longer works when included by Angular JS
我开发了一个页面,当所有 HTML 都包含在单个 HTML 页面中时,该页面可以完美运行。但是,既然我的页面看起来和工作得很好,我想将它分解成包含,这样我就可以在应用程序中创建更多页面,而不必重新创建菜单等。
菜单是一段代码,其中包括由链接激活的下拉菜单。
我在 Angular JS 中使用自定义指令来分解包含,所以我的菜单看起来像这样:
index.html:
<sidebar-standard></sidebar-standard>
includes/sidebar-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 添加它时,它不起作用。控制台日志中没有错误。
如何调试这个问题?任何人都可以提供的任何方向将不胜感激。
提前致谢!
为了跟进这个问题,我必须做的是一些评论所建议的:在指令中包含点击控制功能。在查看了很多其他人的代码,并看到了这个应用程序的前作者所做的之后,我最终从使用指令改为使用控制器。
所以,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() 是关键。谢谢各位指路!非常感谢在研究方向上的帮助。 =)
我开发了一个页面,当所有 HTML 都包含在单个 HTML 页面中时,该页面可以完美运行。但是,既然我的页面看起来和工作得很好,我想将它分解成包含,这样我就可以在应用程序中创建更多页面,而不必重新创建菜单等。
菜单是一段代码,其中包括由链接激活的下拉菜单。
我在 Angular JS 中使用自定义指令来分解包含,所以我的菜单看起来像这样:
index.html:
<sidebar-standard></sidebar-standard>
includes/sidebar-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 添加它时,它不起作用。控制台日志中没有错误。
如何调试这个问题?任何人都可以提供的任何方向将不胜感激。
提前致谢!
为了跟进这个问题,我必须做的是一些评论所建议的:在指令中包含点击控制功能。在查看了很多其他人的代码,并看到了这个应用程序的前作者所做的之后,我最终从使用指令改为使用控制器。
所以,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() 是关键。谢谢各位指路!非常感谢在研究方向上的帮助。 =)