2017-06-15 6 views
0

特定の要素を既存のviewModelから解析して新しい配列に入れたいと思っています。特定の要素をknockout.jsに保存するviewmodel(array)

私は、申請者の膨大な情報を持っているアプリケーションviewModelを持っています。次のように呼ばれる:

self.applications = ko.observableArray(@Html.Json(Model.ApplicationCompatibilities.Select(o => o.JsonForm)) || []); 

enter image description here

上記添付画像に示すように、「アプリケーション」オブジェクトはそれにいくつかの要素を有します。

私がやりたいことは、「applicationKey」要素だけを新しい配列に取得することでした。それでは、私がやったことだった。

  self.previewApplication = ko.computed(function() { 
       return ko.utils.arrayFilter(self.applications(), function (i) { 
        return i.application.applicationKey; 
       }); 
      }); 

私は「self.applications()」ViewModelにのみ「application.applicationKey」を返すをループすることを意図し。しかし、私は実際にそれを行うことにより、取得することです:私はちょうど新しいViewModelに内部同じ「アプリケーション」オブジェクトを取得しています

enter image description here

。 "application.applicationKey"だけの配列を取得するにはどうすればよいですか?

ありがとうございます!助けてください!

編集:

これが今動作します!今私のviewModel.previewApplication()は、私にapplicationKeyのリストを返します。今私がしたいのは、モーダルを読み込むリンクを追加することです。そして、私は特定の「applicationKey」例えば

を持っている特定の「アプリケーション」を表示することをモーダルの内側に、モーダルへのリンクは次のようになります。

<a href="#" data-toggle="modal" data-target="#previewApplicantModal" data-bind="attr: { 'data-applicationKey': application.applicationKey }"> 
    Preview Application 
</a> 

をだから私は、要素を検査した場合リンクのために、それは新しいデータ・バインディングがあります。

<a href="#" data-toggle="modal" data-target="#previewApplicantModal" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="abc976cfx"> 
    Preview Application 
</a> 

は、最後に私は、「アプリケーション」オブジェクトをループにしたいし、そのapplicationKeyとして「abc976cfx」を持つオブジェクトの唯一の「1」の要素を返します。

これを行う簡単な方法はありますか?私は説明のためにスクリーンショットを添付しました。

enter image description here

答えて

1

arrayFilterは、配列をフィルタリングし、項目がフィルタ条件に一致するかどう機能は、trueまたはfalseを返します。代わりにarrayMapが必要です。

+0

この特定のケースで使用する方法を教えてください。 – Dukakus17

+1

'arrayFilter'を' arrayMap'に置き換えると、それ以外は同じままです。 'arrayMap'のための関数はあなたが項目にマップしたいものを返します。この場合はスカラー値です。 –

+0

ありがとう!それは今働く。あなたは私の2番目の接続の質問に答えることができますか?可能であれば、私の編集を見てください。どうもありがとうございます! – Dukakus17

関連する問題