[英]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]
}
將觸發更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.