Javascript 角度材质如何构建控制md内容的sidenav菜单?
我正在开发一款基于Angularjs和AngularMaterial的手机,但我对如何设置菜单有点困惑 以下是我的简化情况: 在我的Javascript 角度材质如何构建控制md内容的sidenav菜单?,javascript,html,angularjs,angular-material,Javascript,Html,Angularjs,Angular Material,我正在开发一款基于Angularjs和AngularMaterial的手机,但我对如何设置菜单有点困惑 以下是我的简化情况: 在我的身体内部我有我的md侧导航和一个md内容,在我的md侧导航内部有所有的md菜单按钮 问题:如何实现这些md菜单按钮,以便单击它们,在md content中显示不同的内容 例如,当我单击“主页”时,会出现一个包含所有主页内容的div,以此类推?下面是一个简单的示例- 加价 <div ng-controller="AppCtrl" layout="column"
身体内部
我有我的md侧导航
和一个md内容
,在我的md侧导航
内部有所有的md菜单按钮
问题:如何实现这些md菜单按钮
,以便单击它们,在md content
中显示不同的内容
例如,当我单击“主页”时,会出现一个包含所有主页内容的
div
,以此类推?下面是一个简单的示例-
加价
<div ng-controller="AppCtrl" layout="column" style="height:500px;" ng-cloak="" class="sidenavdemoBasicUsage" ng-app="MyApp">
<section layout="row" flex="">
<md-sidenav class="md-sidenav-left" md-component-id="left" md-whiteframe="4" id="leftSideNav" md-disable-backdrop="true">
<md-toolbar class="md-theme-indigo" layout="row">
<h1 class="md-toolbar-tools">Sidenav Left</h1>
<span flex></span>
<md-button ng-click="close()">Close</md-button>
</md-toolbar>
<md-content layout-padding="" layout="column" layout-align="start start">
<md-button ng-click="show('home')" class="md-primary">Show Home</md-button>
<md-button ng-click="show('work')" class="md-primary">Show Work</md-button>
</md-content>
</md-sidenav>
<md-content flex="" layout-padding="" layout="column" layout-align="top center">
<md-button ng-click="toggleLeft()" class="md-primary">
Toggle left
</md-button>
<div ng-switch="toShow">
<div ng-switch-when="home">
Home!
</div>
<div ng-switch-when="work">
Work!
</div>
</div>
</md-content>
</section>
</div>
您可能会将AngularJS与SPA(单页应用程序)概念结合使用,那么为什么不尝试使用AngularJS路由模块呢?它是专门为这种目的而构建的 AngularJS有两个流行的路由模块,即:
ngView
指令中显示不同的模板:
HTML
注意:如果侧导航在Plunker演示中尚未打开,请不要忘记从左上角打开侧导航
注 在HTML中加载angularJS后,不要忘了加载
ngRoute
的脚本
您还可以在链接中查看服务的HTML5模式
方法,以配置路由的工作方式(例如/dashboard
,而不是#dashboard
)
angular
.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('AppCtrl', function ($scope, $mdSidenav) {
$scope.toShow = "home"; // Default
$scope.toggleLeft = function() {
$mdSidenav("left")
.toggle();
};
$scope.close = function () {
$mdSidenav('left').close();
};
$scope.show = function (toShow) {
$scope.toShow = toShow;
};
});
<!-- Your md-buttons -->
<a md-button href="#dashboard">Dashboard</a>
<a md-button href="#some-other-route">Some other route</a>
<!-- ... -->
<md-content>
<div ng-view></div> <!-- This is where your templates (and their controllers) are injected -->
</md-content>
angular.module('yourApp', [
'ngRoute',
// other dependencies
])
.config(function($routeProvider){
/*
* set up your routes here
*/
$routeProvider.
when('/dashboard', {
template: '...' // alernatively, `templateUrl` if your partial stays somewhere else,
controller: function (){
/* custom logic for the template */
}
})
.when('/some-other-route', {
template: '...',
controller: function(){ ... }
});
})