簡體   English   中英

使用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]
}

將觸發更新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM