如何更改Reactive Array中的值并重新运行帮助程序

时间:2015-12-07 16:58:24

标签: javascript arrays meteor helper

我在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,正确。所以价值已经改变了,但是在我执行了一个不相关的推动之前,帮助者没有重新运行。操作

我无法在文档中看到有关更新值的任何内容,只能添加和删除值。

有没有办法更新反应式数组中的值,反应性?

2 个答案:

答案 0 :(得分:1)

您可以使用ReactiveArray.splice()替换无效数组中的元素,甚至可以创建处理单个元素的便捷方法:

ReactiveArray.prototype.setAt = function(pos, item) {
  return this.splice(pos, 1, item);
};

arr = new ReactiveArray(['a', 'b', 'c']);
// ["a", "b", "c"]

arr[0];
// "a"

arr.setAt(0, "newVal");
// ["a"]

arr[0];
// "newVal"

答案 1 :(得分:0)

当您按索引在数组中设置值时,看起来这个包不支持反应源。尝试检查一下package