apicloud开发app的总结。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32123133/article/details/76615383

转apicloud总结
暑假在做apicloud的app,这篇总结写的很好,记一下。

自己踩过的坑。。做个简单的记录:希望可以帮助有需要的人。
1. 手机加载日历,由于按业务需要,是要求动态加载input框个数,每个都可以点击触发日历。问题:动态添加进来的元素,点击并不能触发日历。解决:加载input框之前,加载日历插件的js和css,使事件生效。这是我封装的加载js和css的函数,直接调用就好。

    function loadjscssfile(filename, filetype) {
            switch (filetype) {
                case "js":
                    var fileref = document.createElement('script');
                    fileref.setAttribute("type", "text/javascript");
                    fileref.setAttribute("src", filename);
                    document.body.appendChild(fileref);
                    break;
                case 'css':
                    var fileref = document.createElement('link');
                    fileref.setAttribute("rel", "stylesheet");
                    fileref.setAttribute("type", "text/css");
                    fileref.setAttribute("href", filename);
                    document.body.appendChild(fileref);
                    break;
            }
    }

2.还是日历上,手机点击input时会默认出来键盘,挡住日历,不便用户操作。我查了一下资料,发现还是这个方法最好用,也很好理解。

    var C_Items = document.getElementsByClassName("C_Item")
        for(var i= 0;i<C_Items.length;i++){
          C_Items[i].addEventListener('focus',function(){
              document.activeElement.blur();
          })
    }

取出所有input,组成数组,当有focus()事件的时候,触发blur(),就好。
3.关于清除缓存和版本信息,直接调用apicloud里封装好的getCacheSize获取缓存大小,clearCache清楚缓存。以及api.appVersion这个属性值,直接获取appVersion。

//异步返回结果:
api.getCacheSize(function(ret) {
    var size = ret.size;
});

//同步返回结果:
var size = api.getCacheSize({
    sync: true
});
api.clearCache(function() {
    api.toast({
        msg: '清除完成'
    });
});

4.有时页面跳转会出现传值,页面复用,返回时会进入死循环,(两个页面互相返回),还有时会出现返回后,页面需要reload(),但是reload:true。又不是很好用,有局限性(页面是frame的时候,reload:true不起作用),这系列的页面跳转问题,可以用pageParam:{key:val}的属性,传值给指定页面。刷新问题,可用sendEvent
将任意一个自定义事件广播出去,该事件可在任意页面通过 addEventListener 监听收到。

api.sendEvent({
    name: 'myEvent',
    extra: {
        key1: 'value1',
        key2: 'value2'
    }
});

//html页面a:
api.addEventListener({
    name: 'myEvent'
}, function(ret, err) {
    alert(JSON.stringify(ret.value));
});

//html页面b:
api.addEventListener({
    name: 'myEvent'
}, function(ret, err) {
    alert(JSON.stringify(ret.value));
});

以上,a、b都将收到myEvent的事件,并进行页面的刷新,或者是局部刷新。

猜你喜欢

转载自blog.csdn.net/qq_32123133/article/details/76615383