如何更改反应数组中的值并重新运行帮助程序
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)
然后助手重新运行,我在屏幕上正确地看到4,5
。因此,值已经更改,但直到我执行了一个不相关的"推送"操作,帮助程序才重新运行。
我在文档中看不到任何关于更新值的内容,只是添加和删除值。
有没有办法更新反应数组中的值?
您可以使用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"
当您按索引在数组中设置值时,看起来这个包不支持反应源。试着检查一下这个包裹。
相关文章:
- {{#each}}内部的Handlebar帮助程序
- 仅为一个窗体运行应用程序脚本
- 重新运行上次进行的AJAX调用
- 谷歌图表在运行应用程序时只能显示一次
- MAC操作系统-如何通过Java类运行应用程序(.app)
- Handlebars帮助程序未获取变量的值
- 如何在node+express中重新运行请求处理程序
- Node Express Handlebars帮助程序未返回函数的结果
- 运行此程序后出现错误,未捕获的类型错误:无法读取未定义的属性“推送”
- 关闭并重新访问应用程序后,本地存储中的数据不会保留
- 如何让应用程序帮助程序方法在发送的请求为 JS 格式时工作
- 我想让我的程序重新运行开头,有点像循环 JavaScript
- 当$scope更改时重新运行反应式帮助程序
- 更改值后如何重新加载帮助程序
- 如何更改反应数组中的值并重新运行帮助程序
- 重新运行写入Excel文件的程序会抛出空指针异常
- 从帮助程序函数更新 DOM 后运行函数
- 使用 Enzyme 进行 React 单元测试不会重新绑定帮助程序函数的上下文
- 为什么帮助程序在未引用 #with 块中的任何反应变量时会重新运行
- 如何在自定义帮助程序中重新实现 jQuery 的默认帮助程序