【发布时间】:2016-03-12 09:03:04
【问题描述】:
我在 Meteor 中使用 Reactive Array 包,无法弄清楚如何更改数组中的值并让助手重新运行。这是一件非常基本的事情,我一定遗漏了一些明显的东西,但我一直找不到答案。这是我的代码:
在客户端:
test_arr = new ReactiveArray([3]);
助手:
UI.registerHelper('array_test', function(){
return test_arr.list();
});
在模板中:
{{array_test}}
在屏幕上我按预期看到“3”,但如果我用这个改变反应数组的值:
test_arr[0] = 4
屏幕上没有任何变化,即使我在控制台中运行 test_arr.list(),我看到 [4]。如果我推送一个新值:
test_arr.push(5)
然后助手重新运行,我在屏幕上正确地看到了4,5。所以值已经改变了,但是在我执行了一个不相关的“推送”操作之前,助手没有重新运行。
我在文档中看不到任何关于更新值的内容,只能添加和删除值。
有什么方法可以响应式地更新反应式数组中的值吗?
【问题讨论】:
-
使用拼接。您可以创建一个处理单个元素的便捷方法。
-
谢谢。 test_array.splice(position, 1, new_value) 完美运行。更好的是,在我的模板中使用 {{#each}}{{test_array}}{{/each}} 时,帮助程序仅针对更新的值运行,因此效率很高。您想发布您的解决方案作为答案,以便我接受吗?我认为如果这个例子出现在文档中会很有用,因为我不可能是唯一一个错过这个的人。
标签: javascript arrays meteor helper