在移动应用程序的离子中创建嵌套列表
creating nested list in the ionic for mobile app
我正在开发移动应用程序。我想创建一个嵌套列表。谁能帮我吗。例如在我的第一页列表中是:食品、饮料。点击食物我要显示L1,L2,L3等
我怎样才能做到这一点?
不确定这是否是推荐的方式,但这对我有用
<ion-list>
<ion-item nav-clear menu-close ng-click="toggleSubmenu()">Menu 1</ion-item>
<ion-item nav-clear menu-close ng-show="submenu">
<ion-list>
<ion-item nav-clear menu-close>Submenu 1</ion-item>
<ion-item nav-clear menu-close>Submenu 2</ion-item>
<ion-item nav-clear menu-close>Submenu 3</ion-item>
</ion-list>
</ion-item>
<ion-item nav-clear menu-close>Menu 2</ion-item>
<ion-item nav-clear menu-close>Menu 3</ion-item>
<ion-item nav-clear menu-close>Menu 4</ion-item>
</ion-list>
您可以使用 ionic-starter-tabs which illustrates the navigation you are describing. This is a running example from the same source: http://plnkr.co/edit/qYMCrt?p=preview
此行为是通过 ui-router, already included with Ionic:
实现的
.state('tab.friend-detail', {
url: '/friend/:friendId',
views: {
'tab-friends': {
templateUrl: 'friend-detail.html',
controller: 'FriendDetailCtrl'
}
}
})
我不知道这段代码是谁写的,但它真的很好地解决了你的问题。
angular.module('ionicApp', ['ionic'])
.controller('MyCtrl', function($scope) {
$scope.groups = [];
for (var i=0; i<10; i++) {
$scope.groups[i] = {
name: i,
items: [],
show: false
};
for (var j=0; j<3; j++) {
$scope.groups[i].items.push(i + '-' + j);
}
}
/*
* if given group is the selected group, deselect it
* else, select the given group
*/
$scope.toggleGroup = function(group) {
group.show = !group.show;
};
$scope.isGroupShown = function(group) {
return group.show;
};
});
.list .item.item-accordion {
line-height: 38px;
padding-top: 0;
padding-bottom: 0;
transition: 0.09s all linear;
}
.list .item.item-accordion.ng-hide {
line-height: 0px;
}
.list .item.item-accordion.ng-hide-add,
.list .item.item-accordion.ng-hide-remove {
display: block !important;
}
<html ng-app="ionicApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Ionic collapsible list</title>
<link href="//code.ionicframework.com/1.0.0-beta.12/css/ionic.css" rel="stylesheet">
<script src="//code.ionicframework.com/1.0.0-beta.12/js/ionic.bundle.js"></script>
</script>
</head>
<body ng-controller="MyCtrl">
<ion-header-bar class="bar-positive">
<h1 class="title">Ionic collapsible list</h1>
</ion-header-bar>
<ion-content>
<ion-list>
<div ng-repeat="group in groups">
<ion-item class="item-stable"
ng-click="toggleGroup(group)"
ng-class="{active: isGroupShown(group)}">
<i class="icon" ng-class="isGroupShown(group) ? 'ion-minus' : 'ion-plus'"></i>
Group {{group.name}}
</ion-item>
<ion-item class="item-accordion"
ng-repeat="item in group.items"
ng-show="isGroupShown(group)">
{{item}}
</ion-item>
</div>
</ion-list>
</ion-content>
</body>
</html>
希望这会奏效
HTML代码
<ion-item ng-click="showSubMenu()">
Show Submenu
<div ng-if="isShowSubMenu">
<ion-item menu-close href="#/app/one">
Submenu Menu One
</ion-item>
<ion-item menu-close href="#/app/two">
Submenu Menu Two
</ion-item>
<ion-item menu-close href="#/app/three">
Submenu Menu Three
</ion-item>
</div>
</ion-item>
在Controller.Js
文件
的控制器中写下下面的函数
$scope.showSubMenu = function(){
$scope.isShowSubMenu=!$scope.isShowSubMenu;
};
在app.js
中写下下面的代码
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
//// =========== New Start
.state('app.one', {
url: '/one',
views: {
'menuContent': {
templateUrl: 'templates/1Menu.html',
controller: 'FirstCtrl'
}
}
})
.state('app.two', {
url: '/two',
views: {
'menuContent': {
templateUrl: 'templates/2Menu.html',
controller: 'SecondCtrl'
}
}
})
.state('app.three', {
url: '/three',
views: {
'menuContent': {
templateUrl: 'templates/3Menu.html',
controller: 'ThirdCtrl'
}
}
})
});
在 controller.js
文件中创建控制器
.controller('FirstCtrl', function($scope){
$scope.pageLable='One';
})
.controller('SecondCtrl', function($scope){
$scope.pageLable='Two';
})
.controller('ThirdCtrl', function($scope){
$scope.pageLable='Three';
})
HTML 页数 1Menu.html
<ion-view view-title="One">
<ion-content>
<h1>{{pageLable}}</h1>
</ion-content>
</ion-view>
我正在开发移动应用程序。我想创建一个嵌套列表。谁能帮我吗。例如在我的第一页列表中是:食品、饮料。点击食物我要显示L1,L2,L3等
我怎样才能做到这一点?
不确定这是否是推荐的方式,但这对我有用
<ion-list>
<ion-item nav-clear menu-close ng-click="toggleSubmenu()">Menu 1</ion-item>
<ion-item nav-clear menu-close ng-show="submenu">
<ion-list>
<ion-item nav-clear menu-close>Submenu 1</ion-item>
<ion-item nav-clear menu-close>Submenu 2</ion-item>
<ion-item nav-clear menu-close>Submenu 3</ion-item>
</ion-list>
</ion-item>
<ion-item nav-clear menu-close>Menu 2</ion-item>
<ion-item nav-clear menu-close>Menu 3</ion-item>
<ion-item nav-clear menu-close>Menu 4</ion-item>
</ion-list>
您可以使用 ionic-starter-tabs which illustrates the navigation you are describing. This is a running example from the same source: http://plnkr.co/edit/qYMCrt?p=preview
此行为是通过 ui-router, already included with Ionic:
实现的 .state('tab.friend-detail', {
url: '/friend/:friendId',
views: {
'tab-friends': {
templateUrl: 'friend-detail.html',
controller: 'FriendDetailCtrl'
}
}
})
我不知道这段代码是谁写的,但它真的很好地解决了你的问题。
angular.module('ionicApp', ['ionic'])
.controller('MyCtrl', function($scope) {
$scope.groups = [];
for (var i=0; i<10; i++) {
$scope.groups[i] = {
name: i,
items: [],
show: false
};
for (var j=0; j<3; j++) {
$scope.groups[i].items.push(i + '-' + j);
}
}
/*
* if given group is the selected group, deselect it
* else, select the given group
*/
$scope.toggleGroup = function(group) {
group.show = !group.show;
};
$scope.isGroupShown = function(group) {
return group.show;
};
});
.list .item.item-accordion {
line-height: 38px;
padding-top: 0;
padding-bottom: 0;
transition: 0.09s all linear;
}
.list .item.item-accordion.ng-hide {
line-height: 0px;
}
.list .item.item-accordion.ng-hide-add,
.list .item.item-accordion.ng-hide-remove {
display: block !important;
}
<html ng-app="ionicApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Ionic collapsible list</title>
<link href="//code.ionicframework.com/1.0.0-beta.12/css/ionic.css" rel="stylesheet">
<script src="//code.ionicframework.com/1.0.0-beta.12/js/ionic.bundle.js"></script>
</script>
</head>
<body ng-controller="MyCtrl">
<ion-header-bar class="bar-positive">
<h1 class="title">Ionic collapsible list</h1>
</ion-header-bar>
<ion-content>
<ion-list>
<div ng-repeat="group in groups">
<ion-item class="item-stable"
ng-click="toggleGroup(group)"
ng-class="{active: isGroupShown(group)}">
<i class="icon" ng-class="isGroupShown(group) ? 'ion-minus' : 'ion-plus'"></i>
Group {{group.name}}
</ion-item>
<ion-item class="item-accordion"
ng-repeat="item in group.items"
ng-show="isGroupShown(group)">
{{item}}
</ion-item>
</div>
</ion-list>
</ion-content>
</body>
</html>
希望这会奏效
HTML代码
<ion-item ng-click="showSubMenu()">
Show Submenu
<div ng-if="isShowSubMenu">
<ion-item menu-close href="#/app/one">
Submenu Menu One
</ion-item>
<ion-item menu-close href="#/app/two">
Submenu Menu Two
</ion-item>
<ion-item menu-close href="#/app/three">
Submenu Menu Three
</ion-item>
</div>
</ion-item>
在Controller.Js
文件
$scope.showSubMenu = function(){
$scope.isShowSubMenu=!$scope.isShowSubMenu;
};
在app.js
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
//// =========== New Start
.state('app.one', {
url: '/one',
views: {
'menuContent': {
templateUrl: 'templates/1Menu.html',
controller: 'FirstCtrl'
}
}
})
.state('app.two', {
url: '/two',
views: {
'menuContent': {
templateUrl: 'templates/2Menu.html',
controller: 'SecondCtrl'
}
}
})
.state('app.three', {
url: '/three',
views: {
'menuContent': {
templateUrl: 'templates/3Menu.html',
controller: 'ThirdCtrl'
}
}
})
});
在 controller.js
文件中创建控制器
.controller('FirstCtrl', function($scope){
$scope.pageLable='One';
})
.controller('SecondCtrl', function($scope){
$scope.pageLable='Two';
})
.controller('ThirdCtrl', function($scope){
$scope.pageLable='Three';
})
HTML 页数 1Menu.html
<ion-view view-title="One">
<ion-content>
<h1>{{pageLable}}</h1>
</ion-content>
</ion-view>