0

ページ上の一連のアイテムの可視性を制御する一連のチェックボックスがあります。どのボックスもチェックされていないときにすべてのアイテムが表示されるように、いくつかの機能を追加しようとしています。

私の最初の質問は、以下で行っているように、データバインドで論理演算子を使用できますか? ここのドキュメント(http://knockoutjs.com/documentation/binding-syntax.html)から、できるはずです。すべてのチェックボックスに対して追加の計算セットを作成する必要がないようにしています。これが可能であれば、何が間違っていますか?

<div data-bind="visible: (showStaff() || showAll())" class="procedure">

Chrome で KnockoutJS インスペクターを見ると、式の残りの部分ではなく、「showStaff()」のみが評価されているように見えます。showStaff() と showAP() の両方が機能することを知っていたので、次のことも試しました。まだ前半しか評価していません。

<div data-bind="visible: (showStaff() || showAP())" class="procedure">

これが私のjsです:

var self = this;
self.showAP = ko.observable(true);
self.showTR = ko.observable(true);
self.showSR = ko.observable(true);
self.showStaff = ko.observable(true);
self.showNSW = ko.observable(true);
self.showGA = ko.observable(true);
self.showP14 = ko.observable(true);
self.showSW = ko.observable(true);
self.showAll = ko.computed(function () {
    var show;
    if (!self.showAP && !self.showTR && !self.showSR && !self.showStaff && !self.showNSW && !self.showGA && !self.showP14 && !self.showSW) {
        showAll = true;
        return show;
    }
    else {
        showAll = false;
        return show;
    }
});
4

2 に答える 2

0

オブザーバブルを間違った方法で操作します。次のように計算を変更します。

self.showAll = ko.computed(function () {
    var show;
    if (!self.showAP() && !self.showTR() && !self.showSR() && !self.showStaff() && !self.showNSW() && !self.showGA() && !self.showP14() && !self.showSW()) {
        show = true;
        return show;
    }
    else {
        show = false;
        return show;
    }
});
于 2013-07-09T14:08:52.553 に答える