繁体   English   中英

如何在Meteor中的客户端上下文周围传递反应式数组?

[英]How do I pass a reactive array around the client context in Meteor?

我正在尝试创建一个类似于此处所示的反应性数组( 如何从Meteor集合制作反应性数组? ),但是该解决方案无法正常工作。

下面的代码创建了一个数组并正确地对其进行了更新,但是预先输入无法看到对'foo'集合的任何后续更新。 我也尝试过使用jquery-ui自动完成功能,但结果相同。

@Coll = new Meteor.Collection "foo"

if Meteor.isClient
  Template.myForm.rendered = ->
    Meteor.defer ->
      $('.inputs').typeahead
        source: Template.myList.test()

  Meteor.autorun ->
    Template.myList.test = ->
      _(Coll.find().fetch()).pluck "Name"

我猜这个问题与我依赖于相当hacky的“ Template.myList.test”来存储数组有关。 我尝试使用以下内容:

Meteor.autorun ->
  test = _(Coll.find().fetch()).pluck "Name"

但预先输入无法找到“测试”。

因此,这里的解决方案可能是更改我存储数组的方式,而不是更改find​​()的执行方式。

如果您希望数组是反应性的,则可能应该使用Meteor集合。 对数组的响应式更新效率极低,因为整个数组都随着单个元素的更改而更改。

但是,一般而言,Meteor中的自动完成解决方案不应像传统代码中那样依赖静态数组。 我鼓励您尝试一下我的流星感知自动完成软件包,该软件包是专门在流星集合之上构建的:

https://github.com/mizzao/meteor-autocomplete

使用会议

Meteor.autorun ->
  Session.set 'test', _(Coll.find().fetch()).pluck "Name"

Template.myList.test = ->
  Session.get 'test'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM