开源项目 At.js v0.2.0-beta. :)

ichord · 2013年01月05日 · 最后由 cameo 回复于 2013年10月30日 · 4503 次阅读

PS. 因为今天发的帖子没了。不想重复写。再简单的说一下好了。

最近重构了 At.js. 折腾了一些新东西。

PS. 目前新版放在了 master 分支。旧的版本就是默认的 stable 分支了。

  • codo 生成了类似 yardoc文档
  • 使用 grunt 管理项目
  • 重新写了 user guide
  • jasmine 写了单元测试。
  • 加入了 travis 测试
  • 遵循 OSS Manifesto

新版本的主要变更是提供了很多可自定义的接口,比如可以自定义匹配规则,过滤,还有使用自己的模板解析。具体看文档 😄

我想尽量将 At.js 写成类似于 "中间人" 角色。只负责捕捉标记字符 (e.g "@") 和后面的查询字符,并且很好的显示出下拉列表的位置。其它的事情叫出来给开发这自己定义。

对了,现在好多文档都不太完整.....夹杂着中英文,这个就慢慢修整好了。

one more thing.

本来总觉得老在 Ruby 社区发布 At.js 的信息不对劲。At.js 是 javascript 的嘛..= = 但后来觉得当初开发 At.js 的初衷就是因为 ruby-china 社区里的一个 issue (估计找不到了) 所以就继续再这发布消息好了.... 😄

PS. jquery-atwho-rails 没还有发布。等稳定点再说。

欢迎各种评价 非常稀缺啊!!

2 楼 已删除

这个好,过段时间准备用上。到时候在给你详细的建议 :)

做得越来越好了!

coffeedoc.info 很不错啊!

没有项目 link....

@yedingding 呃,忘记了。之前有写的... 现在放在 master 分支,旧的放在 stable 分支

#6 楼 @huacnlee 对啊。配合 codo 用。

支持。以前用过,不过不支持类似 {id:1111, name: Mike} 这样的复杂数据结构,以前我为了用它做过一些小的改动。

建议楼主加入对复杂数据结构的支持,显示的时候只显示头像和名字,但 @ 之后存储用户的全部信息,因为很多时候可能会出现重名问题。

@zhuoqun 一直都支持那种数据结构啊。我还特意把数组转成那种结构呢...

存储用户信息我在新版考虑过,但是如果 @ 错后,用户删掉了怎么办?这个我还没想到什么好的解决方法....= =. and, 其实你可以配置成显示和插入的内容不一样的。显示头像和名字,但插入用户 id.

Anyway, 现在操作数据的方法全做成回调接口了。可以自己定制。

好东西啊!

支持。。文檔不錯~ “中間人”這個挺好的

#11 楼 @ichord 啊,一直没发现,因为 example 里面写的只是简单字符串 Array 的例子。

用户删除掉那个逻辑我做了,就是每次用户 keydown 的时候检测一下输入框里面的文本是否和存储的用户信息是否一致,如果有些用户信息被删除了,那么就在存储的用户信息里面删掉。比如说我一开始 @ 了两个人:

@小王 和 @小张

存储的信息是 [{id:1, name:小王}, {id:2, name:小张]. 这个时候如果我删了一个字符,变成了:

@小王 和 @小

那么文本里面就搜不到「小张」这个词了,于是就把数组里面的 {id:2, name:小张} 删除。

@zhuoqun example 就是放最简单的例子啦.....不过现在看文档应该会比较好..

如果 id 不一样,name 不一样怎么办?

#15 楼 @ichord 如果 @ 了两个「小张」,删除一个之后,文本里其实还有一个小张,所以两个小张都会保留。我觉得这种错误是可以容忍的。不然永远没办法做到完美,因为很有可能出现用户输入 @ 之后粘贴用户名、输入但是不从列表里面选取 等各种状态。

要是有选中内容背景色高亮就好了!

@zhuoqun 嗯。那我设定一些触发事件好了。我尽量提供接口。功能就交给你们自己弄了。哈哈哈 @hxgdzyuyi 这个再说好了...= =. 兼容浏览器很变态。

#18 楼 @ichord

好!

不过还是建议写个复杂点儿的例子,文档里面只有一行字,很难注意到。一般现在看开源的东西都懒得看文档,直接先找例子。

@knwang @zhuoqun 如果要触发事件的话,你们会想要捕捉哪些事件啊?

#20 楼 @ichord 有选中成功的事件就行了吧,最好提供一个获取所有 @ 的人的 data 的 method, 这样可以在其它地方调用。

#20 楼 @ichord 今天刚准备升级,发现两个问题 1.使用自定义 remote_filter 时候,必须要输入参数 data,但是 371 行回调时,却没有把 data 作为 url 传递进去 2.当页面上存在多个输入框激活 atwho 时,我看代码是重用了 view,导致 409 行回调中得到的 this 对象一直是老的 view,这样第二个输入框中选中的 item 都跑到第一个输入框中了。(我不希望因为这个初始化不同的 view_id)

#20 楼 @ichord 再回复一下,建议加上对中文拼音的支持。输入用户名的全拼或双拼或者汉字都可以出现提示。这里有个 ruby 的拼音组件:

https://github.com/janx/ruby-pinyin

我之前做这个的时候做过一次总结,希望对你的重构有一些帮助:

http://www.douban.com/note/237101376/

#20 楼 @ichord @ 键就好了。

@zhuoqun 这个你可以自己修改 remote_filter 接口通过服务器实现。或者更改 matcher 本地实现。

@liberydn

  • 1. shit..... stupid mistake. 我再把相关的单元测试写上好了。
  • 2. 啊... 一直没去用鼠标点击。

@zhuoqun @liberydn and... 以后这些 bug 什么的尽量到 github 上去 post issue 吧。 @liberydn 你指的那些行数我找起来好麻烦... 直接在那行评论就好了啦....

@ichord 已经 pull request 了

@ichord 原来这么好用的@是来自您这里,谢谢谢谢。开源的力量,奉献的力量,正的力量。

@liberydn cool! 我周末再把文档单元测试什么的加上. @feitian124 😄

@knwang @liberydn cool now.~ 目前只加了三个事件 Events

@ichord 昨天用上了,好东西 简单。 只是有一点, 这个模板

"<li data-value='${id}'>${name} <small>${email}</small></li>"

只有 name 会在敲字的时候匹配出现,输入完后显示的是 @id。 没有看到特别说明 只能搜索 name

也许你用的是旧的版本.? @yakjuly . 新的版本在 master 分支。

你可以配置 seach_key 去搜索你要的 key. data-value 一直都是插入到输入框的值。具体配置看文档的 Settings章节。

如果你想搜索多个 key, 那么你就要自己修改搜索的接口 filter. 具体看 Callbacks 章节。

@ichord 建议增加 Highlight 显示 "@username"(如果 username 是 valid),那样就更完美了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号