Knockout.js 它在数组中已经存在的状态。我可以举一个例子,如果你展示更多的代码,那就太好了。我在页面上有很多代码,但我认为其他代码与此无关。你还需要看什么?基本上,每次我点击一个按钮,代码就会被调用,将当前卖家添加到数组中(下拉列表)。我只希望下拉列表中有唯一的卖家。您
Knockout.js 它在数组中已经存在的状态。我可以举一个例子,如果你展示更多的代码,那就太好了。我在页面上有很多代码,但我认为其他代码与此无关。你还需要看什么?基本上,每次我点击一个按钮,代码就会被调用,将当前卖家添加到数组中(下拉列表)。我只希望下拉列表中有唯一的卖家。您,knockout.js,Knockout.js,它在数组中已经存在的状态。我可以举一个例子,如果你展示更多的代码,那就太好了。我在页面上有很多代码,但我认为其他代码与此无关。你还需要看什么?基本上,每次我点击一个按钮,代码就会被调用,将当前卖家添加到数组中(下拉列表)。我只希望下拉列表中有唯一的卖家。您正在将opts数组添加到sellers数组(数组中的数组)。您可能需要sellerOptionModel.sellers.push({Text:studentName,Value:result.sellerID})。但是您的indexOf将始终
它在数组中已经存在的状态。我可以举一个例子,如果你展示更多的代码,那就太好了。我在页面上有很多代码,但我认为其他代码与此无关。你还需要看什么?基本上,每次我点击一个按钮,代码就会被调用,将当前卖家添加到数组中(下拉列表)。我只希望下拉列表中有唯一的卖家。您正在将
opts
数组添加到sellers
数组(数组中的数组)。您可能需要sellerOptionModel.sellers.push({Text:studentName,Value:result.sellerID})
。但是您的indexOf
将始终为-1,因为它通过引用比较对象。Aw,那么我如何才能仅在项目不存在的情况下添加?“indexOf(opts)”永远不会工作,因为opts是您刚刚创建的新数组。在任何情况下,它都不会存在于阵列中。我可以举一个例子,如果你展示更多的代码,那就太好了。我在页面上有很多代码,但我认为其他代码与此无关。你还需要看什么?基本上,每次我点击一个按钮,代码就会被调用,将当前卖家添加到数组中(下拉列表)。我只想在下拉列表中找到独一无二的卖家。太棒了!非常感谢你!令人惊叹的!非常感谢你!
// add seller to dropdown list
var opts = [];
opts.push({Text: studentName, Value: result.sellerID});
console.log("opts: " + JSON.stringify(opts));
if (sellerOptionModel.sellers.indexOf(opts) < 0) {
sellerOptionModel.sellers(opts);
}
// add seller to dropdown list
var opts = [];
opts.push({Text: studentName, Value: result.sellerID});
console.log("opts: " + JSON.stringify(opts));
if (sellerOptionModel.sellers.indexOf(opts) < 0) {
sellerOptionModel.sellers.push(opts);
}
var SellerOptionModel = function() {
var self = this;
self.sellers = ko.observableArray([]);
self.sellerID = ko.observable();
}
$("#nextForm").on('click', function(e) {
e.preventDefault();
var room = $("#roomSelect").val();
var invalidItems = invalidItemsArr.join(",");
$("#invalidItems").val(invalidItems);
if(verify == "True") {
var seller = $('#sellerSelect').val();
}
if(room == "") {
e.preventDefault();
slideDownMsg("Please select a room first.");
slideUpMsg(4000);
} else {
var firstName = capitalizeFirstLetter($.trim($("#firstName").val()));
var lastName = capitalizeFirstLetter($.trim($("#lastName").val()));
if(verify != "True" && (firstName == "" || lastName == "")) {
e.preventDefault();
slideDownMsg("Please fill in the student's first and last name.");
slideUpMsg(3500);
} else if(seller == "") {
e.preventDefault();
slideDownMsg("Please select a seller from the dropdown.");
slideUpMsg(3500);
} else { // all good we can save the student
$.ajax({
url: '@Url.Action("SaveStudent", "Tally")',
type: 'POST',
data: $("#tallyForm").serialize(),
success: function (result) {
if(result.success == true) {
var studentName = firstName + " " + lastName;
slideDownMsg("Tally entry saved for " + studentName + ".");
slideUpMsg(4000);
var room = $("#roomSelect").val();
$("#tallyForm")[0].reset();
$("#roomSelect").val(room);
tallyViewModel.items([]);
tallyViewModel.addLine();
if(room != "") {
getImage(room);
}
tallyViewModel.runningQty(0);
tallyViewModel.runningTotal(0);
// add seller to dropdown list
var opts = [];
opts.push({Text: studentName, Value: result.sellerID});
console.log("opts: " + JSON.stringify(opts));
if (sellerOptionModel.sellers.indexOf(opts) < 0) {
sellerOptionModel.sellers.push({Text: studentName, Value: result.sellerID})
}
sellerOptionModel.sellers.sort();
} else {
slideDownMsg("Failed saving tally entry for " + firstName + " " + lastName + ".");
slideUpMsg(4000);
}
},
error: function (request, status, error) {
e.preventDefault();
displayError("Error", request.responseText);
}
});
}
}
});
sellerOptionModel.sellers.push({Text: studentName, Value: result.sellerID});
var a = { id: 3 };
var b = { id: 3 };
console.log(a == b); //returns false;
var match = false;
for (var i = 0; i < sellerOptionModel.sellers().length; i++) {
if(sellerOptionModel.sellers()[i].Value == result.sellerID){
match = true;
break;
}
}
if (!match) {
console.log("new id added");
sellerOptionModel.sellers.push({Text: studentName, Value: result.sellerID});
sellerOptionModel.sellers.sort();
}else{
console.log("id already exists")
}