Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
Chameleon
提交
adb90f4f
C
Chameleon
项目概览
DiDi
/
Chameleon
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Chameleon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
adb90f4f
编写于
4月 16, 2019
作者:
J
JiM-W
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
origin-和原生组件上的属性不解析
上级
12c4b60a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
5 deletion
+18
-5
packages/mvvm-template-parser/common/index.js
packages/mvvm-template-parser/common/index.js
+2
-2
packages/mvvm-template-parser/common/process-template.js
packages/mvvm-template-parser/common/process-template.js
+16
-3
未找到文件。
packages/mvvm-template-parser/common/index.js
浏览文件 @
adb90f4f
...
...
@@ -22,8 +22,8 @@ let source = `<template>
<view class="cls1 cls2"></view>
<view :class="true ? 'cls4' : 'cls5'"></view>
<button></button>
<third-comp1
h
-on:click="click1"></third-comp1>
<origin-checkbox :class="click1"></origin-checkbox>
<third-comp1
v
-on:click="click1"></third-comp1>
<origin-checkbox :class="click1"
class="cls1"
></origin-checkbox>
</view>
</template>`
let
options
=
{
lang
:
'
cml
'
,
...
...
packages/mvvm-template-parser/common/process-template.js
浏览文件 @
adb90f4f
...
...
@@ -68,7 +68,8 @@ _.compileTemplate = function(source,options) {
});
traverse
(
ast
,
{
enter
(
path
)
{
_
.
parseAllAttributes
(
path
);
//所有的入口都以JSXElement为入口解析;
_
.
parseAllAttributes
(
path
,
options
);
_
.
parseBuildTag
(
path
,
options
);
}
});
...
...
@@ -76,7 +77,15 @@ _.compileTemplate = function(source,options) {
return
generate
(
ast
).
code
;
}
_
.
isOriginTagOrNativeComp
=
function
(
tagName
,
options
){
let
usedComponentInfo
=
(
options
.
usingComponents
||
[]).
find
((
item
)
=>
item
.
tagName
===
tagName
)
let
isNative
=
usedComponentInfo
&&
usedComponentInfo
.
isNative
;
let
isOrigin
=
(
tagName
&&
typeof
tagName
===
'
string
'
&&
tagName
.
indexOf
(
'
origin-
'
)
===
0
);
if
(
isOrigin
||
isNative
)
{
return
true
}
return
false
;
}
/*
以标签为基础,解析attruibutes即可
1 v-bind:id="value" ==> id="{{value}}"
...
...
@@ -86,9 +95,13 @@ _.compileTemplate = function(source,options) {
*/
_
.
parseAllAttributes
=
function
(
path
)
{
_
.
parseAllAttributes
=
function
(
path
,
options
)
{
let
node
=
path
.
node
;
if
(
t
.
isJSXElement
(
node
))
{
let
tagName
=
node
.
openingElement
.
name
.
name
if
(
_
.
isOriginTagOrNativeComp
(
tagName
,
options
)){
return
//原生标签和原生组件直接不解析
}
let
attributes
=
node
.
openingElement
.
attributes
;
let
directives
=
[
'
v-if
'
,
'
v-else-if
'
,
'
v-else
'
,
'
v-model
'
,
'
v-show
'
,
'
v-text
'
,
'
v-for
'
];
let
specialJSXNameSapce
=
[
'
c-bind
'
,
'
c-catch
'
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录