[英]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中的自动完成解决方案不应像传统代码中那样依赖静态数组。 我鼓励您尝试一下我的流星感知自动完成软件包,该软件包是专门在流星集合之上构建的:
使用会议
Meteor.autorun ->
Session.set 'test', _(Coll.find().fetch()).pluck "Name"
Template.myList.test = ->
Session.get 'test'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.