ionic入门demo

首先,引入viewport

<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />

定义tab栏与左侧滑动栏

//html
 <ion-side-menus>
        <ion-side-menu-content class="calm-bg">
            <ion-nav-bar class="bar-positive">
                <ion-nav-back-button></ion-nav-back-button>
            </ion-nav-bar>
            <ion-tabs class="tabs-positive tabs-icon-top">
                <ion-tab title="首页" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline" ui-sref="index">
                    <ion-nav-view name="view1"></ion-nav-view>
                </ion-tab>
                <ion-tab title="商城" icon-on="ion-ios-clock" icon-off="ion-ios-clock-outline" ui-sref="shop">
                    <ion-nav-view name="view2"></ion-nav-view>
                </ion-tab>
                <ion-tab title="个人中心" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline" ui-sref="profile">
                    <ion-nav-view name="view3"></ion-nav-view>
                </ion-tab>
            </ion-tabs> 
        </ion-side-menu-content>
        <ion-side-menu side="left" width="150" class="balanced-bg">
            左侧区域
        </ion-side-menu>
    </ion-side-menus>

个人中心页面显示左侧滑动效果。当进入商品详情页面时,隐藏底部的tabs

 myApp.run(function ($rootScope, $state, $ionicTabsDelegate, $ionicHistory, $ionicSideMenuDelegate) {
 //定义进入视图时的事件$ionicView.beforEnter
$rootScope.$on('$ionicView.beforeEnter', function () {
 //进入商品详情页隐藏底部tabs
$ionicTabsDelegate.showBar($state.current.name != 'detail');
 //进入个人中心时,可以向左拉出菜单      $ionicSideMenuDelegate.canDragContent($state.current.name == 'profile')
 if ($state.current.name != 'detail') {
    var views = {},
    viewName = Object.keys($state.current.views)[0]; // 'view2'
    views[viewName] = {
         templateUrl: 'tplDetail',
         controller: 'ctlDetail'
     };
 // {view2:{templateUrl: 'tplDetail', controller: 'ctlDetail'}}

    $ionicHistory.clearHistory();
    $state.replace('detail', {
          url: '/detail/:id',
           views: views
     });
                }

            });
        });

配置路由:

myApp.config(function($stateProvider){
    $stateProvider.state('index',{
        //首页路由
        url:'/index',
        views:{
            view1:{
                templateUrl:"index.html",
                controller:"indexCtrl"
            }
        }
    }).state('shop',{
        //商品路由
        url:"/shop",
        views:{
            view2:{
                templateUrl:"goods.html",
                controller:"goodsCtrl"
            }
        }
    }).state('profile',{
        //个人中心路由
        url:"/profile",
        views:{
            view3:{
                templateUrl:"profile.html",
                controller:"profileCtrl"
            }
        }
    }).state("detail",{
        //商品详情路由,需隐藏底部tab
        url:'/detail',
        views:{
            templateUrl:'detail.html',
            controller:'detailCtrl'
        }
    })

配置控制器:

.controller("myController",["$scope","$state",function($scope,$state){
    //进入和刷新时,始终在进入首页
     $state.go('index')
}])
.controller("indexCtrl",["$scope","$http",function($scope,$http){
                //请求商品数据,可以写入server.js文件中
                $http.get("../api/users/gets").then(function(respon){
                    console.log(respon.data)
                },function(error){
                    console.log(error)
                })
//轮播图部分,需要进行数据请求
$http.get('banner.json').success(function (result) {
$scope.banners = result;
 // 等轮播图数据都加载完之后刷新页面                              $ionicSlideBoxDelegate._instances[0].update();
 //轮播图循环播放                              $ionicSlideBoxDelegate.loop(true);
   });
}])

.controller('ctlDetail', function ($scope, $stateParams, $http) {
//获取id参数
            var id = $stateParams.id;
            $http.get('/api/users/get', {
                params: {
                    id: id
                }
            }).success(function (result) {
                $scope.goods = result.data;
            });
        })

路由文件:

//首页部分
 <script id="tplIndex" type="text/ng-template">
        <ion-view title="首页">
            <ion-content>
                <ion-slide-box delegate-handle="slidebox0" auto-play="true" does-continue="true">
                    <ion-slide ng-repeat="item in banners">
                        <img ng-src="{{item}}"/>
                    </ion-slide>
                </ion-slide-box>
                <ion-list>
                //给商品详情添加id参数,已供detail页面title的显示
                    <ion-item ng-repeat="item in goods" class="item item-thumbnail-left" href="#/detail/{{item.id}}">
                        <img ng-src="{{item.ico}}">
                        <h2>{{item.name}}</h2>
                        <p>{{item.en_name}}</p>
                    </ion-item>
                </ion-list>
            </ion-content>
        </ion-view>
    </script>

//个人商城部分
  <script id="tplShop" type="text/ng-template">
        <ion-view title="商城">
            <ion-content>
                <ion-list>
                    <ion-item ng-repeat="item in goods" class="item item-thumbnail-left" ui-sref="detail">
                        <img ng-src="{{item.ico}}">
                        <h2>{{item.name}}</h2>
                        <p>{{item.en_name}}</p>
                    </ion-item>
                </ion-list>
            </ion-content>
        </ion-view>
    </script>
//个人中心部分
    <script id="tplProfile" type="text/ng-template">
        <ion-view title="个人中心">
        //点击按钮,出现左侧滑动按钮
            <ion-nav-buttons side="left">
                <button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
            </ion-nav-buttons>
            <ion-content>
                个人中心
            </ion-content>
        </ion-view>
    </script>
//商品详情部分
    <script id="tplDetail" type="text/ng-template">
        <ion-view>
        //动态改变标题
            <ion-nav-title>{{goods.name}}</ion-nav-title>
            <ion-content>
                {{goods.name}}
                <hr />
                <div>
                    {{goods.age}}
                </div>
            </ion-content>
        </ion-view>
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值