用RivetsJS检测数组的变化
Detecting changes to arrays with RivetsJS
我是RivetsJS的新用户,我试图弄清楚如何让我的绑定刷新当数组元素修改。当使用简单的赋值(即player_lives -= 1
)时,Rivets似乎能够检测到非复杂变量的变化。它还检测何时将push()
绑定到绑定数组。但是,当我将新值赋给现有数组元素时,不会发生刷新。下面是我正在尝试的一个例子:
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/rivets/0.8.1/rivets.bundled.min.js"></script>
<script type="text/javascript">
var numbers = [111, 222, 333];
window.addEventListener('load', function() {
rivets.bind(document.getElementById('numbers'), {numbers: numbers});
});
function changeNum() {
numbers[0] = 5;
}
</script>
</head>
<body>
<button onclick="changeNum()">Add a number</button>
<div id="numbers">{ numbers }</div>
</body>
</html>
在这种情况下,{ numbers }
绑定不刷新,原始值继续显示。我怀疑Rivets无法检测到正在发生的变化,但我不确定补救的最佳方法是什么。有什么建议吗?
似乎铆钉无法检测到数组索引的变化。
但是,当对数组的引用发生变化时,它会检测。
所以一个解决方案是触发一个引用更改,在你的例子中,类似于function changeNum() {
//numbers[0] = 5;
numbers = [5].concat(numbers.slice(1)); // [5, 222, 333]
}
将触发更新
相关文章:
- ReactJS-这个状态中的数组在删除时被正确更新,但结果是't,直到以后的状态发生变化
- Ng重复不随数组变化而更新
- jQuery:记录数组中的元素变化,并通过索引检查它是如何变化的
- 摘要循环显示我的数组没有变化(视图不会刷新)
- 无论常量是否恒定,常量值都会变化;此外,对一行 2D 数组的更改也会传播到其他行
- 显示数组中不断变化的文本
- 用RivetsJS检测数组的变化
- Ember.js如何观察数组键的输入变化
- Iframe下一页按钮SRC(非数组,实际SRC变化)
- 使用jQuery检测JSON数组中有多少元素发生了变化
- 为什么我的值在数组中会发生变化
- 观察AngularJS服务中数组的变化
- 如何在服务中观察数组或对象的变化
- 如何在AngularJS中观察数组的变化
- dom-repeat中元素的聚合物变化不反映在父数组中
- 当parentScope数组在Angular的childScope中发生变化时,我该如何更新它呢?
- 比较不断变化的数组javascript
- 为什么angularJs会更新数组/哈希图的所有元素,如果只有一个元素发生了变化
- 为什么我的数组类对象中的长度属性会发生变化
- Angular js推送数组中不断变化的值