2017.8.16类型转换、页面传值总结、代码规范

这几天一直在做项目,没有总结,这样很不好!
总结一下,这几天遇到的问题,还有各个知识点。

js中的加号

js中加号不仅代表相加还表示字符串拼接
当加号一边是字符串的时候,实际上两侧都转换成为了字符串。

"1"+1="11"

这就是javascript中的隐式类型转换的一种

隐式类型转换

JavaScript中的数据类型有null,undefined,string,number,Object,boolean。object是引用类型,其他五个是基本类型。

类型转换例子
基本类型

console.log(null==undefined)//true
console.log("3"==3);//true,将字符串"3"转换成数字,然后再进行比较。
console.log("1"==true);//false,分别将"1"和true转换成数字,然后进行比较。

引用类型
两个重要的方法

2017.8.16类型转换、页面传值总结、代码规范_第1张图片
toString()和valueOf()

通常情况下我们认为,将一个对象转换为字符串要调用toString()方法,转换为数字要调用valueOf()方法,但是真正应用的时候并没有这么简单。

webview的传值跨页面的时候能不能不一直传?

mui框架实现页面传值

页面初始化时候,通过扩展参数传值

下面几个场景会执行初始化

  • 通过mui.openWindow()打开新页面(若目标页面为已预加载成功的页面,则在openWindow方法中传递的extras参数无效);
  • 通过mui.init()方法创建子页面;
  • 通过mui.init()方法预加载页面;
  • 通过mui.preload()方法预加载页面
    示例,假设我们有如下需求:
    在首页中打开关于页面时,传递当前产品名称及版本号,然后在关于页面中读取这两个参数并显示出来;
    首页实现代码:
mui.openWindow({
    url:'info.html',
    id:'info.html',
    extras:{
        name:'mui',
        version:'0.5.8'
    }
});

关于页面实现代码:

var self = plus.webview.currentWebview();
var name = self.name;
var version = self.version;

fire传值

第一步:要有目标页面

  var roadLinePage = plus.webview.getWebviewById('choose_car.html');

//取得父页面
var parentWebview = plus.webview.currentWebview().opener(); // 获取父窗口webview

第二步:要有自定义事件 其中getQcCity就是事件

  mui.fire(roadLinePage,'getQcCity',{  
                    qcCityName:cityName,  
                    qcCityId:cityId  
                  });  


//通过mui.fire()方法可触发目标窗口的自定义事件
mui.fire(parentWebview, "finishSelect", {
    responseObj: responseObj,
    currentMaterial:currentMaterial,
    reqDetailId:currentMaterial.id
});

第三部:要在目标页面监听事件getQcCity

  window.addEventListener('getQcCity',function(event){  
            //获得事件参数  
            var id = event.detail.qcCityId;//获取传过来的值  
            document.getElementById("qcCity_").value=id;  
            console.log("取车城市"+id);  
            freshCarTable();//要执行的函数  
            });  


window.addEventListener('finishSelect', function (e) {  //获取参数值
            var responseObj = e.detail.responseObj;//注意这里的书写
    });

其他方法:
父页面在跳转的时候,链接带上参数

url:"sekffhdhh.html?"+eid

子页面获取参数

var href = location.href;
var eid = href.split("?")[1];

本地存储

localStorage.setItem(name,JSON.stringify(value))
var obj = localStorage.getItem(name);

vue中为data中的属性设置新的字段

Vue.set(idleList[i], 'hadNum', 0);
eqList.$set(eqList[i], 'hadNum', 0);

原因:受到es5的限制,vue.js检测不到对象属性的添加或者删除。因为vue.js在初始化实例的时候将属性转换成getter/setter,所以属性必须在data对象上才能让 vue.js转换它,才能让它是响应的。

解决方法:
对于vue实例,可以使用$set(key,value)实例方法
key也支持test.name的写法

this.$set("test00",2222)//test00:2222  
this.$set('test01.name',1222);//test01:{sex:"boy",name:1222}  ok

合作

1.与后台对接方面,应该谈好数据的格式,了解各个接口!
2.后台提供url是什么?我应该发送给他的参数是什么?
3.项目中注意点,连接同一个局域网(自己开热点)!改掉localhost部分!还有tool.js上做修改!可以在postman上先运行看效果。

代码规范

周二开会讲解代码规范事宜,很多也值得自己学习
Web前端代码规范

你可能感兴趣的:(2017.8.16类型转换、页面传值总结、代码规范)