【发布时间】:2016-06-11 22:21:39
【问题描述】:
我正在使用Ionic 和AngularJS 构建一个应用程序。我有四页:
- 登录:没有页眉和页脚。
- 主页:有页眉和页脚,但没有侧边菜单。
- page1 和 page2:带有页眉、页脚和侧边菜单。
登录,page1 和 page2 工作正常。问题在于主页。如何在首页获取想要的功能?
我尝试制作一个codepen http://codepen.io/brunocoder/pen/jqOdbj,但它不工作可能是一些设置问题。
这是我的代码:
index.html
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>
<script src="js/angular-route.js"></script>
<script src="js/app.js"></script>
</head>
<body>
<ion-nav-view></ion-nav-view>
</body>
</html>
模板/html:
<ion-nav-view></ion-nav-view>
<script type="text/ng-template" id="menu.html">
<ion-side-menus>
<ion-side-menu-content>
<ion-nav-bar class="bar-positive">
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon" menu-toggle="left" >
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="menuContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left" enable-menu-with-back-views="true">
<ion-header-bar class="bar-positive">
<h1 class="title">Left</h1>
</ion-header-bar>
<!-- end side menu left header -->
<ion-content>
<ion-list>
<ion-item menu-close ng-repeat="list in pagelist" href="#/app/{{list.url}}">
{{list.title}}
</ion-item>
</ion-list>
</ion-content>
<!-- end side menu left content -->
</ion-side-menu>
</ion-side-menus>
</script>
<script type="text/ng-template" id="login.html">
<ion-view title="Sign-In">
<ion-content>
<div class="list">
<label class="item item-input item-floating-label">
<span class="input-label">Username</span>
<input type="text" placeholder="Username">
</label>
<label class="item item-input item-floating-label">
<span class="input-label">Password</span>
<input type="password" placeholder="Password">
</label>
</div>
<div class="padding">
<button nav-clear class="button button-block button-positive" ng-click="LogIn(user)">
click here
</button>
</div>
</ion-content>
</ion-view>
</script>
<script type="text/ng-template" id="home.html">
<ion-view view-title="Home">
<ion-content ng-controller="HomepageController">
<ion-list>
<ion-item menu-close ng-repeat="list in pagelist" href="#/app/{{list.url}}">
{{list.title}}
</ion-item>
</ion-list>
</ion-content>
</ion-view>
<footer ng-include="'templates/footer.html'"></footer>
</script>
<script type="text/ng-template" id="page1.html">
<ion-view view-title="Page 1">
<div ng-controller="Page1Controller">
<ion-content>
<h2>This is Page 1</h2>
</ion-cotent>
</div>
</ion-view>
<footer ng-include="'templates/footer.html'"></footer>
</script>
<script type="text/ng-template" id="page2.html">
<ion-view view-title="Page 2">
<div ng-controller="Page2Controller">
<ion-content>
<h2>This is Page 2</h2>
</ion-cotent>
</div>
</ion-view>
<footer ng-include="'templates/footer.html'"></footer>
</script>
<script type=text/ng-template id= footer.html>
<div class="bar bar-footer bar-positive">
<a class="button icon-left ion-home button-clear" ng-href="#/app/home"></a>
<a class="button icon-left ion-log-out button-clear" ng-href="#/app/login"></a>
</div>
</script>
app.js:
angular.module('myApp', ['ionic', 'ngRoute'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/menu.html",
controller: 'AppCtrl'
})
.state('app.home', {
url: "/home",
views:{
'menuContent' :{
templateUrl: "templates/home.html",
controller: 'HomepageController'
}
}
})
.state('app.page1',{
url: "/page1",
views:{
'menuContent' :{
templateUrl: 'templates/page1.html',
controller: 'Page1Controller'
}
}
})
.state('app.page2',{
url: "/page2",
views:{
'menuContent' :{
templateUrl: 'templates/page2.html',
controller: 'Page2Controller'
}
}
})
.state('login', {
url: "/login",
templateUrl: "templates/login.html",
controller: 'LoginCtrl'
})
$urlRouterProvider.otherwise('/login');
})
.controller('AppCtrl', function($scope, $location, ServicePaglelist) {
$scope.pagelist = ServicePaglelist;
})
.controller('HomepageController', function($scope, $http, $stateParams, $state, ServicePaglelist, $ionicSideMenuDelegate) {
$ionicSideMenuDelegate.canDragContent(false);
$scope.pagelist = ServicePaglelist;
})
.controller('Page1Controller', function($scope) {
})
.controller('Page2Controller', function($scope) {
})
.controller('LoginCtrl', function($scope, $state) {
$scope.LogIn = function(user) {
$state.go('app.home');
};
})
.factory('ServicePaglelist', function(){
var messages = [
{ title: 'Page 1', id: 1, url: 'page1' },
{ title: 'Page 2', id: 1, url: 'page2' },
];
return messages;
});
谢谢
【问题讨论】:
-
别忘了勾选正确:) 答案如下。
标签: angularjs routing ionic-framework angular-ui-router