1

我在设置meteor-share.js时遇到了麻烦。

基本上我遵循了他们的自述文件。

{{> sharejsAce docid=docid id="editor"}}

这里的第二个是什么docid?我猜这是模板的辅助函数,其中包含我要同步的文档的唯一名称?

第一个是docid什么?这个关键字是meteor-share.js 的吗?

一旦我将它包含在 html(或模板)中,我需要在 js 端(客户端/服务器?)做什么?我应该做些什么来制作模板(sharejsAce)来共享文本?

我不在一个页面中维护多个编辑器,所以我不确定我应该在演示中包含和排除什么。

我想知道这是否只是 API 中的一个错误。当我更改为 codemirror 编辑器时,它就可以工作了。错误是说:

未捕获的类型错误:无法读取未定义的属性“范围”

4

1 回答 1

1

我假设您使用的是 1.2.0 版。如果是这种情况,您需要强制降级到版本 1.1.9。

您可以通过运行以下命令来执行此操作:meteor add mizzao:sharejs-ace@=1.1.9或在.meteor/versions文件中手动更改版本:mizzao:sharejs-ace@1.1.9.

在GitHub 上阅读有关此问题的更多信息。


这里的第二个docid是什么?我猜这是模板的辅助函数,其中包含我要同步的文档的唯一名称?

docidin 参数{{> sharejsAce docid=docid id="editor"}}用于指定应该在编辑器中显示的文档。因此,第二个 docid是帮助函数的名称,它只返回_id已选择的文档:

Template.docItem.events =
  "click a": (e) ->
   e.preventDefault()
   Session.set("document", @_id)


Template.editor.helpers
  docid: -> Session.get("document")

一旦我将它包含在 html(或模板)中,我需要在 js 端(客户端/服务器?)做什么?我应该做些什么来制作模板(sharejsAce)来共享文本?

如果你想用 Meteor 集合镜像 ShareJS 数据并使用 ShareJS 用户访问控制,你需要创建一个设置文件,就像在演示中一样:

{
  "sharejs": {
    "options": {
      "accounts_auth": {
        "authorize": {
            "collection": "documents",
            "token_validations": {
              "or": {
                "invitedUsers": "is_in_array",
                "userId": "is_equal"
              }
            },
            "apply_on": [
              "read",
              "update",
              "create",
              "delete"
            ]
        },
        "authenticate": {
            "collection": "users",
            "token_validations": {
              "_id": "is_equal"
            }
        }
      }
    }
  }
}
于 2015-11-24T17:32:27.193 回答