0
我有一個表是可觀察項目的observablearray。每一行中的第一項是項目編號。我加載我的頁面可能有10行現有數據。我嘗試添加一行新的數據。我輸入產品編號並標籤。當發生這種情況時,它會運行一次檢查來查看它是否已經在數組中,因此它不會讓用戶添加多個相同的項目編號。那麼,因爲它是可觀察的,我假設它會立即被添加到數組中,因爲我輸入或可能當我標籤出來。因此,檢查是總是返回true。knockoutjs - 檢查數組中是否存在項總是返回true
這裏是我的函數,它檢查:
self.checkItemNo = function(data) {
//console.log("lost focus - " + self.invalidItem());
var itemNo = $.trim(data.itemNo());
console.log(itemNo);
if (itemNo != "") {
var item = "";
$.each(window.listOfItems, function(i, v) {
if (v.No.search(itemNo) != -1) {
item = v.Description;
return;
}
});
console.log(item);
if(item != "") {
console.log(self.items()[0].itemNo());
var match = ko.utils.arrayFirst(self.items(), function(oldItem) {
console.log("checking " + newItem.itemNo());
//return itemNo === newItem.itemNo();
return newItem !== oldItem && newItem.itemNo() === oldItem.itemNo();
});
而且這裏是checkItemNo被調用:
<input data-bind="value: itemNo, hasFocus: invalidItem, selected: invalidItem, event: { blur: $parent.checkItemNo }, attr: { name: 'brochureitems[' + $index() + '].itemNo', id: 'brochureItems_' + $index() + '__itemNo' }, validationOptions: { errorElementClass: 'input-validation-error' }" class="form-control item-id" />
我更增添了幾分代碼上下文。 newItem對我來說會是什麼? – dmikester1
我回答了你這個問題的其他版本。 http://stackoverflow.com/questions/41600623/knockout-arrayfirst-not-working-as-expected –
謝謝!對不起,重複,只是想盡快找出這個東西。 – dmikester1