如何更改 Reactive Array 中的值并重新运行 helper
How to change a value in a Reactive Array and rerun the 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)
然后是助手 re运行s,我在屏幕上正确地看到了 4,5
。所以这个值已经改变了,但是助手没有重新运行,直到我执行了一个不相关的'push'操作。
我在文档中看不到任何关于更新值的信息,只有添加和删除值。
有什么方法可以反应性地更新反应数组中的值吗?
当您按索引在数组中设置值时,看起来这个包不支持反应源。试试这个 package.
您可以使用 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"
我在 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)
然后是助手 re运行s,我在屏幕上正确地看到了 4,5
。所以这个值已经改变了,但是助手没有重新运行,直到我执行了一个不相关的'push'操作。
我在文档中看不到任何关于更新值的信息,只有添加和删除值。
有什么方法可以反应性地更新反应数组中的值吗?
当您按索引在数组中设置值时,看起来这个包不支持反应源。试试这个 package.
您可以使用 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"