Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

at 前面空格?,at后怎么取出来? #8

Open
KuiShang opened this issue May 28, 2017 · 10 comments
Open

at 前面空格?,at后怎么取出来? #8

KuiShang opened this issue May 28, 2017 · 10 comments

Comments

@KuiShang
Copy link

1 以微信为例,不管前面是不是空格只要输入at,都会触发事件,目前博主这里似乎是前面空格才行。这个能否修复?
2 at后 肯定还是要取出来(发送出去),如何区分出,真正由于at触发的(ex:@小浩)和手动输入的(ex:@123),

@fritx
Copy link
Owner

fritx commented May 29, 2017

1. 微信不可以呀,我安卓微信6.5.7,以及Mac微信2.2.1,都是a-z0-9紧跟@是无效的,
必须加空白符或标点。应该是为了无匹配email。
在这个issue里comment里@行为也是一样的。

image

image

2. 这里@不区分"at触发的"和"手动输入的",该库旨在消除多余的node节点 (和jquery.atwho的差异),
at信息应以单纯的文本形态存储于content中。

实际上不应该区分,不然如果单纯copy/paste消息,at信息就会不一致,
比如我从记事本里粘贴"@某某"到微信中,也是应该唤醒@功能的,刚试了下。

应该是单纯以规则去从content中直接提取at信息,目前这个功能库里没有帮用户存储或提取,
需要用户自己去处理,库只负责把辅助把at信息插入content。

@KuiShang
Copy link
Author

1 看来只有win版的微信,才会a-z0-9紧跟@是有效,不过现在感觉 有空格才出现更合理

qq 20170529101901

2 at取出问题,应该要修改一下这个库的源码才好实现吧, 比如,在data里增加一个数组,保存at成功的name, 当 selectItem 和 handleDelete 时 更新data的值。您觉得这样怎么样?

@fritx
Copy link
Owner

fritx commented May 29, 2017

嗯,vue-at确实可以提供一个方法来直接获取at信息,如:

  1. v-model="atList" (×)
    ref: add vue-at back with live-demo ready vuejs/awesome-vue#1028 (comment)
<at v-model="atList"></at>

感觉这里使用v-model不合理,因为双向绑定不合理,
如果直接操作atList,编辑器中的text应如何变化?帮用户把所有的@xx移除掉?

  1. @change="handleAtChange" (√)
<at @change="handleAtChange"></at>

<script>
handleAtChange (data) {
  this.atList = data
}
</script>

3 $refs.at.getAtList (√)

<at ref="at"></at>

<script>
send () {
  this.$refs.at.getAtList()  // -->  [...]
}
</script>

最直接了当,虽然一般不是很建议使用$refs:
https://github.com/pablohpsilva/vuejs-component-style-guide#use-thisrefs-with-caution

还有没有其他想法?

@KuiShang
Copy link
Author

暂时木油了,博主强大 O(∩_∩)O

@KuiShang
Copy link
Author

还有一种场景没有考虑:当用户编辑 at的人名时候
image

这种情况下,如果之前存储了已经at的人名集合,要如何才能将其移除?不知道博主有没有好的解决办法

@fritx
Copy link
Owner

fritx commented May 31, 2017

@KuiShang 噢抱歉哈哈,暂时还没空完善功能,
这个问题没事的,所以不管是1./2.,我原本就打算每次都是直接从完整的content重新匹配出atList,
所以不用担心增减不一致的问题

监听的事件直接是editor的input事件,所以不会错过什么

@KuiShang
Copy link
Author

O(∩_∩)O谢谢

@raind33
Copy link

raind33 commented Jan 14, 2020

  1. 微信不可以呀,我安卓微信6.5.7,以及Mac微信2.2.1,都是a-z0-9紧跟@是无效的,
    必须加空白符或标点。应该是为了无匹配email。
    在这个issue里comment里@行为也是一样的。

image

image

  1. 这里@不区分"at触发的"和"手动输入的",该库旨在消除多余的node节点 (和jquery.atwho的差异),
    at信息应以单纯的文本形态存储于content中。

实际上不应该区分,不然如果单纯copy/paste消息,at信息就会不一致,
比如我从记事本里粘贴"@某某"到微信中,也是应该唤醒@功能的,刚试了下。

应该是单纯以规则去从content中直接提取at信息,目前这个功能库里没有帮用户存储或提取,
需要用户自己去处理,库只负责把辅助把at信息插入content。

现在可以不输入空格,直接输入at触发面板么?

@fritx
Copy link
Owner

fritx commented Jan 15, 2020

@raind33 可以的 有一个prop可以控制:
https://fritx.github.io/vue-at/#/en/props

<at :avoidEmail="false"><editor /></at>

@raind33
Copy link

raind33 commented Jan 15, 2020

确实可以,非常感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants