簡體   English   中英

可觀察的數組和計算的誤差

[英]Observable array and computed error

我有一個復選框列表,這些復選框在選中和取消選中時執行功能。 我還有一個可觀察的數組,其中包含當前處於活動狀態(放入本地存儲)的復選框的值。 相關代碼在這里:

this.layerToggleChecked = knockout.observableArray();

// ...

this.layerToggle = function (source, name, type, url, description) {
    return knockout.computed({
        read: function () {
            return this.layerToggleChecked();
        },
        write: function (checked) {
            if (checked) {
                alert("loading");
                this.layerToggleChecked.push(source());
            } else {
                alert("removing");
                this.layerToggleChecked.remove(source());
            }
        }
    }, this);
}

復選框按計划工作,觸發功能,直到我添加return this.layerToggleChecked(); 哪個返回

Knockout-3.2.0.js:13 Uncaught TypeError:b.push不是一個函數

淘汰賽的checked綁定處理數組的方式與其他值不同。 您期望將truefalse寫入計算出的可觀察對象,但是您將返回一個數組,這顯然是不一樣的。

來自http://knockoutjs.com/documentation/checked-binding.html

如果您的參數解析為array則會給予特殊考慮。 在這種情況下,如果值與數組中的項目匹配,則KO將設置要檢查的元素,如果數組中不包含該元素,則將其取消選中。

當用戶選中或取消選中復選框時,KO將相應地從數組中添加或刪除值。

由於您使用數組保存檢查值,因此最好直接綁定到該數組:

<input type="checkbox" data-bind="checkedValue: source, checked: layerToggleChecked" />

暫無
暫無

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

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