私はMVC4SPA、knockoutJsで少し働いていますが、
私の問題は、ko.computedに値を渡したいということです。これが私のコードです。
<div data-bind="foreach: firms">
<fieldset>
<legend><span data-bind="text: Name"></span></legend>
<div data-bind="foreach: $parent.getClients">
<p>
<span data-bind="text: Name"></span>
</p>
</div>
</fieldset>
</div>
self.getClients = ko.computed(function (Id) {
var filter = Id;
return ko.utils.arrayFilter(self.Clients(), function (item) {
var fId = item.FirmId();
return (fId === filter);
});
});
会社名をヘッダーとして表示し、その下にクライアントを表示したいだけです。関数が呼び出されていますが、次のように変更すると、Idが未定義になります(「Firm」でも試しました)。
var filter = id; TO var filter = 1;
それはうまくいきます、
では...どのようにしてko.computedに値を渡しますか? IDである必要はなく、Firmオブジェクトなどでもかまいません。
ノックアウトでは、計算された関数に何も渡すことはできません。それはそれが何のためであるかではありません。代わりに、必要に応じて通常の関数を使用することもできます。
もう1つのオプションは、最初のforeachを実行したデータセットにデータを既に含めることです。このように、$parent.getClients
を使用するのではなく、$data.clients
のように使用します。