angularjs 备忘

1.一个页面不能同时多个collection-repeat 否则页面样式会出现不可预知的错误

2.$ rootScope ,只在本次有效。关掉app 再打开,这个$rootScope的变量 值为 undefind

3.playBeep()

自定义对话框,确定框,通知音,震动。
详细 API 说明:http://docs.phonegap.com/en/3.3.0/cordova_notification_notification.md.html#Notification

// 蜂鸣三次 
function playBeep() { 
       navigator.notification.beep(3); 
} 

Android的特异情况:

  • Androids会播放在“设置/音效及显示”面板中指定的默认“通知铃声”。

iPhone的特异情况:

  • 忽略蜂鸣次数参数。
  • iPhone没有本地的蜂鸣API。
  • PhoneGap通过多媒体API播放音频文件来实现蜂鸣。
  • 用户必须提供一个包含所需的蜂鸣声的文件。
  • 此文件播放时长必须短于30秒,位于www/root,并且必须命名为beep.wav。

4. vibrate()

// 震动2.5秒 
navigator.notification.vibrate(2500); 

iPhone的特异情况:

  • time:忽略时长参数,震动时长为预先设定值。

简单的范例:

navigator.notification.vibrate(); 
navigator.notification.vibrate(2500);   // 2500被忽略掉 

5.让app 在每次打开时检查更新;第一次安装时,引导页完毕后,请求首页数据后,再检查更新。

  • 问题:第一次安装app 时,在引导页时就显示 更新框了。应该引导页完毕,加载首页数据时,才去服务器获取最新版本。

更新方法开始是放在app.js 的

 $ionicPlatform.ready(function () {
            //在设备初始化完成后隐藏Splash画面延迟
            setTimeout(function() {
                navigator.splashscreen.hide();
            }, 1000);
            //更新
            checkUpdate();
 }

解决方案:

 *1. 因为加载引导页时,是判断缓存中的一个对象`window.localStorage['first']`。*
           //shoppingcar
            .state('tab.shoppingcart',{url: '/shoppingcart', nativeTransitions: null,  cache: 'false',views:{'tab-shoppingcart': {templateUrl: "templates/tab-ShoppingCart.html", controller: 'ShoppingCartCtrl'} } })
            .state('welcome', {
                url: '/welcome',
                abstract: true,
                templateUrl: 'templates/welcome/welcome.html',
                controller: 'GuidController'
            })
            .state('welcome.w_page', {
                url: '/w_page',
                views: {
                    'welcome': {
                        templateUrl: 'templates/welcome/w_page.html',
                        controller: 'GuidController'
                    }
                }
            })

        // if none of the above states are matched, use this as the fallback如果以上匹配,使用回退
        if (!window.localStorage['first'])
        {
            //跳到引导页
            $urlRouterProvider.otherwise('/welcome/w_page');
            $("#header_q").hide();
        }
        else
        {
            $urlRouterProvider.otherwise('/tab/home');
        }

这是自己定义的window.localStorage['first']
因为在引导页GuidController。如果滑动到最后一页,并且点击进入,会写一个对象first 并赋值1,并存到缓存。

 .controller('GuidController', function ($scope,$ionicModal, $state, $timeout,$rootScope,$ionicSlideBoxDelegate) {
        $scope.guideFlag = 'a';
        //点击进入app 的方法
        $scope.guideSure = function() {
            $state.go('tab.home');
            window.localStorage['first'] = '1';
        };
        $scope.Schange=function(index){
            if(index==1)
            {
                $scope.guideFlag = 'a';
            }
            if(index==2)
            {
                //只有guideFlag  值为b 才显示 ‘进入app’的div
                $scope.guideFlag = 'b';
                //定义一个全局变量,用于在加载首页controller  判断,是否是第一次安装。
                $rootScope.up='0';
                console.info($scope.guideFlag);
            }
        };
    })

所以,应该以缓存来判断是否显示更新窗。so。。 app.js是这么改的。

  • 注意 :当 window.localStorage['first']undefind时,!window.localStorage['first']true
  if (!(!window.localStorage['first']))
            {
                checkUpdate();
            }

如果已经加载过引导页,那么window.localStorage['first']在缓存中的值为1 ,那么就检查更新。
1 =true
!1= false
!(!1)=true

*2.首页controller  `HomeCtrl`*

HomeCtrl

      document.addEventListener('deviceready', onDeviceReady, false);
            function onDeviceReady() {
                if (!MJC.isOnline()) {
                    MJC.myNotice("暂无网络连接...");
                    //console.log('11111');
                    //console.log(MJC.getSignature(Storage.load('user')[0]['User_Code'], Storage.load('user')[0]['Users_Id']));
                    $scope.portalListData = Storage.load('pro-list');
                    //console.log($scope.portalListData);
                    if ($scope.portalListData == false) {
                        $scope.notice = false;
                    } else {
                        for (var i = 0; i < $scope.portalListData.advert.length; i++) {
                            $scope.portalListData.advert[i].ImgPath = 'img/ionic.png';
                            MJC.myNotice( $scope.portalListData.advert[i].ImgPath );
                        }
                    }
                    //下拉刷新,滑动图片失效的解决方案。
                    $ionicSlideBoxDelegate.$getByHandle('image-viewer').update();

                } else {
                    //获取服务器数据保存
                    Activity_Product_List.getTopTopics();
                    //引导页时定义$rootScope.up=0,加载首页时,只显示一次更新,并且赋值,防止再切换到home时出现更新窗。
                    //退出再次打开app 时,$rootScope.up 被删除。值为undefind,也不执行checkUpdate();
                    //所以只有再次打开,才显示更新。
                    if($rootScope.up=='0')
                    {
                        $rootScope.up='1'
                        checkUpdate();
                    }

                }
            }

so 这样就解决了。让app 在每次打开时检查更新;第一次安装时,引导页完毕后,请求首页数据后,再检查更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值