MCPcopy Index your code
hub / github.com/ygs-code/vue / parseModel

Function parseModel

vue.js:9982–10027  ·  view source on GitHub ↗
(val)

Source from the content-addressed store, hash-verified

9980 // 两种情况分析1 如果数据是object.info.name的情况下 则返回是 {exp: "object.info",key: "name"}
9981 //如果数据是object[info][name]的情况下 则返回是 {exp: "object[info]",key: "name"}
9982 function parseModel(val) {
9983 // Fix https://github.com/vuejs/vue/pull/7730
9984 // allow v-model="obj.val " (trailing whitespace)
9985 val = val.trim(); //值
9986 len = val.length; //获取长度
9987 //lastIndexOf 方法可返回一个指定的字符串值最后出现的位置
9988 if (
9989 val.indexOf('[') < 0 || //这个字符串没有出现过[
9990 val.lastIndexOf(']') < len - 1 //这个字符串 没有出现过]这个符号 或者是出现位置不是在最后一位的时候
9991 ) {
9992 index$1 = val.lastIndexOf('.'); //获取最后一位出现 . 的位置
9993 if (index$1 > -1) { //说明有点.
9994 return {
9995 exp: val.slice(0, index$1), //丢弃最后一位 比如data.object.info.age获取data.object.info
9996 key: '"' + val.slice(index$1 + 1) + '"' //获取最后一位 age
9997 }
9998 } else {
9999 return {
10000 exp: val, //如果没有点 则只有一个值
10001 key: null
10002 }
10003 }
10004 }
10005
10006 str = val;
10007 index$1 = expressionPos = expressionEndPos = 0;
10008 // 索引和字符串长度比较 如果索引大于或者等于字符串的时候返回真
10009
10010 while (!eof()) { //循环获取字符串的编码 直到把字符编码循环完
10011 //获取字符串的编码
10012 chr = next();
10013 /* istanbul ignore if */
10014
10015 if (isStringStart(chr)) { //如果是 " 或者 ' 的时候返回真
10016 parseString(chr); //循环匹配一对''或者""符号
10017 } else if (chr === 0x5B) { // 符号 [
10018 //检测 匹配[] 一对这样的=括号
10019 parseBracket(chr);
10020 }
10021 }
10022
10023 return {
10024 exp: val.slice(0, expressionPos),
10025 key: val.slice(expressionPos + 1, expressionEndPos)
10026 }
10027 }
10028
10029 //索引加加 获取字符串的编码
10030 function next() {

Callers 2

genAssignmentCodeFunction · 0.85
vue.jsFile · 0.85

Calls 5

eofFunction · 0.85
nextFunction · 0.85
isStringStartFunction · 0.85
parseStringFunction · 0.85
parseBracketFunction · 0.85

Tested by

no test coverage detected