Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
陈庄旺
uni-app
提交
300e8f10
U
uni-app
项目概览
陈庄旺
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
300e8f10
编写于
8月 08, 2019
作者:
xuty73419315
提交者:
GitHub
8月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create movable-area
add nvue component movable-area
上级
686336d6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
187 addition
and
0 deletion
+187
-0
src/platforms/app-plus-nvue/runtime/components/movable-area
src/platforms/app-plus-nvue/runtime/components/movable-area
+187
-0
未找到文件。
src/platforms/app-plus-nvue/runtime/components/movable-area
0 → 100644
浏览文件 @
300e8f10
function getMovableArea (weex) {
const dom = weex.requireModule('dom')
return {
name: 'MovableArea',
props: {
scaleArea: {
type: Boolean,
default: false
}
},
data () {
return {
width: 0,
height: 0,
items: []
}
},
methods: {
_resize () {
this._getWH().then(() => {
this.items.forEach(function (item) {
item.componentInstance.setParent()
})
})
},
// _find (target, items = this.items) {
// var root = this.$el
// function get (node) {
// for (let i = 0; i < items.length; i++) {
// const item = items[i]
// if (node === item.componentInstance.$el) {
// return item
// }
// }
// if (node === root || node === document.body || node === document) {
// return null
// }
// return get(node.parentNode)
// }
// return get(target)
// },
_touchstart (t) {
// t.stopPropagation()
if (this.touchItem) {
this.touchItem.touchstart(t)
}
// var i = t.touches
// if (i) {
// if (i.length > 1) {
// var r = {
// x: i[1].pageX - i[0].pageX,
// y: i[1].pageY - i[0].pageY
// }
// this.pinchStartLen = calc(r)
// this.gapV = r
// if (!this.scaleArea) {
// var touch0 = this._find(i[0].target)
// var touch1 = this._find(i[1].target)
// this._scaleMovableView = touch0 && touch0 === touch1 ? touch0 : null
// }
// }
// }
},
_touchmove (t) {
t.stopPropagation()
if (this.touchItem) {
this.touchItem.touchmove(t)
}
// var n = t.touches
// if (n) {
// if (n.length > 1) {
// t.preventDefault()
// var i = {
// x: n[1].pageX - n[0].pageX,
// y: n[1].pageY - n[0].pageY
// }
// if (this.gapV.x !== null && this.pinchStartLen > 0) {
// var r = calc(i) / this.pinchStartLen
// this._updateScale(r)
// }
// this.gapV = i
// }
// }
},
_touchend (e) {
// e.stopPropagation()
if (this.touchItem) {
this.touchItem.touchend(e)
this.touchItem = null
}
// var t = e.touches
// if (!(t && t.length)) {
// if (e.changedTouches) {
// this.gapV.x = 0
// this.gapV.y = 0
// this.pinchStartLen = null
// if (this.scaleArea) {
// this.items.forEach(function (item) {
// item.componentInstance._endScale()
// })
// } else {
// if (this._scaleMovableView) {
// this._scaleMovableView.componentInstance._endScale()
// }
// }
// }
// }
},
// _updateScale (e) {
// if (e && e !== 1) {
// if (this.scaleArea) {
// this.items.forEach(function (item) {
// item.componentInstance._setScale(e)
// })
// } else {
// if (this._scaleMovableView) {
// this._scaleMovableView.componentInstance._setScale(e)
// }
// }
// }
// },
_getWH () {
return this._getComponentSize(this.$refs.el).then(({ width, height, top, left }) => {
this.width = width
this.height = height
this.top = top
this.left = left
})
},
_getComponentSize (el) {
return new Promise((resolve) => {
dom.getComponentRect(el, ({ size }) => {
resolve(size)
})
})
}
},
created () {
this.items = []
this.gapV = {
x: null,
y: null
}
this.pinchStartLen = null
},
mounted () {
// 由于weex在mounted后渲染是异步的不能确保元素渲染完成,需要延迟执行
setTimeout(() => {
this.__isMounted = true
this._resize()
}, 200)
},
render (createElement) {
const items = []
const slots = Array.isArray(this.$slots.default) ? this.$slots.default : []
slots.forEach(vnode => {
if (vnode.componentOptions && vnode.componentOptions.tag === 'movable-view') {
items.push(vnode)
}
})
this.items = items
const listeners = {}
const events = ['touchstart', 'touchmove', 'touchend']
events.forEach(event => {
listeners[event] = this[`_${event}`]
})
return createElement('div', this._g({
ref: 'el',
on: listeners,
staticClass: ['uni-movable-area']
}, this.$listeners), items, 2)
},
style: {
'uni-movable-area': {
width: '10px',
height: '10px'
}
}
}
}
export default function init (Vue, weex) {
Vue.component('movable-area', getMovableArea(weex))
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录