0

Or - 特定の項目が選択されているかどうかを判断する。

「チェック」できるオブジェクトの配列があります-アイテムのチェックボックスがチェックされている場合、親要素に対していくつかの条件付き属性をアクティブにする必要があります(色が変わる必要があります)。条件付きのものとチェックボックスが機能していますが、各項目が現在選択されているかどうかを効率的に監視する方法がわかりません。

私の現在の実装は、「selectedItems」配列を繰り返し処理して、要素ごとにターゲット要素が含まれているかどうかを判断します。これはこれを達成するための最悪の方法だと思います:

var folderViewModel = function (data) {
    var self = this;
    self.isSelected = ko.computed(function () {
                var i = publishedSelectedFolders().length;
                debugger;
                while (i--) {
                    if (publishedSelectedFolders[i] === self.folderId()) {
                        alert("true");
                        return true;
                    }
                }
                return false;
            }, self);
             .....

どんなヒントも素晴らしいでしょう。ここに私のフィドルがあります(可能な限り単純化されています):

http://jsfiddle.net/mWXTs/3/

4

1 に答える 1

1

私は逆の方法でそれを行います- (選択されたアイテムの配列の代わりに)checkedバインドするバインディングを使用します:isSelected

<input type="checkbox" data-bind="checked: isSelected" />

各フォルダで:

self.isSelected = ko.observable(false);

親で:

vm.selectedItems = ko.computed(function() {
    return ko.utils.arrayFilter(vm.items(), function(item) {
        return item.isSelected();
    });
});
于 2013-05-01T03:37:49.327 に答える