didi / mand-mobile

💰 A mobile UI toolkit, based on Vue.js 2, designed for financial scenarios.
https://didi.github.io/mand-mobile
Apache License 2.0
3.46k stars 772 forks source link

实际项目中使用发现缺失的一些功能?! #204

Closed LLwanran closed 6 years ago

LLwanran commented 6 years ago

1、加载更多,如何配置loading菊花样式?只有下拉才有 2、ScrollView和Tabs一起使用时,scrolling-x关闭也会禁用Tabs的左右滑动 3、ImageViewer缺少类似vue-photo-preview的双击放大、滑动关闭、头部底部文本等 4、Button如何设置上传或下载时整体进度指示,类似原生从左至右整体进度条 5、Toast如果icon和文本为上下结构,该如何配置 6、骨架屏 以上问题不知道能否考虑新增,总体上很好用,比较优雅!

weihongyu12 commented 6 years ago

骨架屏可以使用https://github.com/lavas-project/vue-skeleton-webpack-plugin

xxyan0205 commented 6 years ago

加载更多是自定组件通过插槽more引入,关于3-6的feature类问题我们会讨论

LLwanran commented 6 years ago

加载更多是自定组件通过插槽more引入,关于3-6的feature类问题我们会讨论

问题1通过自定义一个Spinner,通过插槽more已实现,谢谢!

LLwanran commented 6 years ago

骨架屏可以使用https://github.com/lavas-project/vue-skeleton-webpack-plugin

谢谢答复!这个挺好,但是用的太多千篇一律,我是更希望该项目组能提供和该框架配套的,尽量少引用其他第三方库。

LLwanran commented 6 years ago

Amount组件如何主动触发?即当首页载入完成,在popup里再想去调用Amount金额变更动画,在Props里未发现类似run的属性

xxyan0205 commented 6 years ago

Amount组件如何主动触发?即当首页载入完成,在popup里再想去调用Amount金额变更动画,在Props里未发现类似run的属性

变更动画出现在value发生变化的时候,上述情况需要当popup弹出后再变更数值

LLwanran commented 6 years ago

Amount组件如何主动触发?即当首页载入完成,在popup里再想去调用Amount金额变更动画,在Props里未发现类似run的属性

变更动画出现在value发生变化的时候,上述情况需要当popup弹出后再变更数值

通常情况这样确实没问题,但如果在金额未变动时,我们不希望每一次路由切换时都执行动画,就会在mounted时做个if else判断是否带is-animated属性,那在popup变更数值时就没办法主动去触发动画了?!

xxyan0205 commented 6 years ago

对于amount其实来说只有值发生变化时的过渡动效,与mounted无关。建议通过keep-alive保证路由切换时不要重新渲染组件,不建议通过使用is-animated控制。

LLwanran commented 6 years ago

受教了! 另外真心希望Popup能像Dialog有个单例调用模式就好了,Popup的居中弹层模式是使用非常广泛的,目前我水平有限,现在的做法是每新增一个popup就挂载到入口模板,然后在main.js通过extend再一个一个手动挂载,最后再通过$emit、$on调用,感觉既烦琐也不方便维护。以前使用vonic框架时就感觉它这块调用很简单,所有弹层直接封装在相应页面的popups.js里面(只一句popup.fromTemplate就行),无需写template,需要的地方引入了一个一个调用就OK。求教

xxyan0205 commented 6 years ago

现在的做法是每新增一个popup就挂载到入口模板,然后在main.js通过extend再一个一个手动挂载,最后再通过$emit、$on调用

具体是什么场景?

我们目前的层级划分是将Popup作为一个底层基础组件,它直接在应用层出现频度不是很高,只是用来解决一些自定义内容较为复杂的,且需要状态驱动的情况,即作为逻辑容器而非UI容器使用。用单例模式无论是实现和使用都会增加很高的成本。

在其上层我们封装了基于Popup的Dialog, Toast, Actionsheet等,期望覆盖一些具体的高频使用场景、功能,因此在该层提供了单例模式。未来也是在该层做相关拓展,以覆盖更多场景、功能。

LLwanran commented 6 years ago

现在的做法是每新增一个popup就挂载到入口模板,然后在main.js通过extend再一个一个手动挂载,最后再通过$emit、$on调用

具体是什么场景?

我们目前的层级划分是将Popup作为一个底层基础组件,它直接在应用层出现频度不是很高,只是用来解决一些自定义内容较为复杂的,且需要状态驱动的情况,即作为逻辑容器而非UI容器使用。用单例模式无论是实现和使用都会增加很高的成本。

在其上层我们封装了基于Popup的Dialog, Toast, Actionsheet等,期望覆盖一些具体的高频使用场景、功能,因此在该层提供了单例模式。未来也是在该层做相关拓展,以覆盖更多场景、功能。

例如我们会在API拦截层封装一系列方法,常规就是toast和dialog单例调用就足够了,但如果我们需要不可关闭的popup提示框,直接用dialog好像没办法实现(Dialog单例没有禁止关闭属性且样式无法扩展),只能用popup,而popup又不能单例调用,必须再封装一下,如果是新手红包、节日活动等类型,单独封装一个或使用Landscape没问题,但是简单的popup提示感觉封装又过于麻烦了

weihongyu12 commented 6 years ago

骨架屏可以使用https://github.com/lavas-project/vue-skeleton-webpack-plugin

谢谢答复!这个挺好,但是用的太多千篇一律,我是更希望该项目组能提供和该框架配套的,尽量少引用其他第三方库。

我是这么认为的,mand mobile是一款UI组件,vue-skeleton-webpack-plugin是一款skeleton插件,我们在使用一款组件的同时,不应该排斥其他插件,这样一方面能让mand mobile的工作保持在UI层面,同时令代码和组件精简化。

至于你说的千篇一律,这个我不认同,skeleton骨架屏本身就需要根据页面来设计,即便mand mobile提供这样的组件或者功能,仍然无法避开你说的千篇一律,要从根源上解决这个问题还是要从项目的UI做起。

LLwanran commented 6 years ago

骨架屏可以使用https://github.com/lavas-project/vue-skeleton-webpack-plugin

谢谢答复!这个挺好,但是用的太多千篇一律,我是更希望该项目组能提供和该框架配套的,尽量少引用其他第三方库。

我是这么认为的,mand mobile是一款UI组件,vue-skeleton-webpack-plugin是一款skeleton插件,我们在使用一款组件的同时,不应该排斥其他插件,这样一方面能让mand mobile的工作保持在UI层面,同时令代码和组件精简化。

至于你说的千篇一律,这个我不认同,skeleton骨架屏本身就需要根据页面来设计,即便mand mobile提供这样的组件或者功能,仍然无法避开你说的千篇一律,要从根源上解决这个问题还是要从项目的UI做起。

谢谢指正🙏是由于我对此尚未深入体验,暂时用lottie替代了skeleton