2017-06-15 68 views
0

我想從現有viewModel解析特定元素並將其放入新數組中。在knockout.js 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()」視圖模型,並返回只有「application.applicationKey」。但我實際上這樣做,得到的是:

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> 

最後,我想通過「應用程序」對象循環,並返回具有「abc976cfx」爲applicationKey對象的唯一「一個」元素。

有沒有簡單的方法來做到這一點?爲了更好的解釋,我附上了截圖。

enter image description here

回答

1

arrayFilter濾鏡數組如果該項目符合您查詢條件或者不是函數返回true或false。您需要改爲arrayMap

+0

請問在這種特殊情況下如何使用它? – Dukakus17

+1

用'arrayMap'直接替換'arrayFilter',一切都保持不變。 'arrayMap'函數返回你想要映射項目的任何東西,在這種情況下是一個標量值。 –

+0

謝謝!它現在有效。你能回答我的第二個連接問題嗎?如果可能,請看看我的編輯。非常感謝! – Dukakus17