在 ObservableArray 中查找参数索引 - KnockoutJS
Finding the Index Of Argument in ObservableArray - KnockoutJS
我是 KoJS 的新手,我的问题是我无法访问数组对象的索引。我正在尝试检查商品 ID 是否存在,我将增加购物车中的商品数量。我可以在购物车视图中显示我的商品,但找不到商品索引。我试过 indexOf 方法,但它们 returns -1,需要帮助。这是我的代码部分。我的数据来自 MVC 端。我试图找到一个 id 并试图找到 manuel 键入的 id。
function Cart(id, stock_name, stock_id, amount, unit_price, unit_price_tax, unit,
curr_id, price, rate, product_no, pack_id, tax_rate) {
return {
id: ko.observable(id),
stock_name: ko.observable(stock_name),
stock_id: ko.observable(stock_id),
amount: ko.observable(1),
unit_price: ko.observable(unit_price),
unit_price_tax: ko.observable(unit_price_tax.toFixed(2)),
unit: ko.observable(unit),
curr_id: ko.observable(curr_id),
price: ko.observable(price),
rate: ko.observable(rate),
product_no: ko.observable(product_no),
pack_id: ko.observable(pack_id),
tax_rate: ko.observable(tax_rate)
}
};
self.AddCart = function (d) {
debugger;
var index = self.Carts().indexOf('97454');
var index2 = self.Carts().indexOf(97454);
if (index !== -1) {
self.Carts.replace(amount, amount++);
}
else {
self.Carts.push(new Cart(
d.id,
d.stock_name,
d.stock_id,
d.quantity * 1,
d.selected_price,
d.selected_tax_price,
d.unit,
d.curr_id,
d.price,
d.rate,
d.product_no,
d.pack_id,
d.tax_rate,
));
console.log(self.Carts());
console.log(self.Carts().length);
}};
使用 indexOf
总是会给你 -1
因为你传递给它的是一个字符串(例如 '97454'
),而你的 Carts
数组不是字符串,而是对象。
你应该使用 ko.utils.arrayFirst
:
ko.utils.arrayFirst(self.Carts(), function(cart) {
return cart.id() === '97454';
})
顺便说一句,我认为您不想要一个名为 Carts
的对象,而是 CartItems
.
我是 KoJS 的新手,我的问题是我无法访问数组对象的索引。我正在尝试检查商品 ID 是否存在,我将增加购物车中的商品数量。我可以在购物车视图中显示我的商品,但找不到商品索引。我试过 indexOf 方法,但它们 returns -1,需要帮助。这是我的代码部分。我的数据来自 MVC 端。我试图找到一个 id 并试图找到 manuel 键入的 id。
function Cart(id, stock_name, stock_id, amount, unit_price, unit_price_tax, unit,
curr_id, price, rate, product_no, pack_id, tax_rate) {
return {
id: ko.observable(id),
stock_name: ko.observable(stock_name),
stock_id: ko.observable(stock_id),
amount: ko.observable(1),
unit_price: ko.observable(unit_price),
unit_price_tax: ko.observable(unit_price_tax.toFixed(2)),
unit: ko.observable(unit),
curr_id: ko.observable(curr_id),
price: ko.observable(price),
rate: ko.observable(rate),
product_no: ko.observable(product_no),
pack_id: ko.observable(pack_id),
tax_rate: ko.observable(tax_rate)
}
};
self.AddCart = function (d) {
debugger;
var index = self.Carts().indexOf('97454');
var index2 = self.Carts().indexOf(97454);
if (index !== -1) {
self.Carts.replace(amount, amount++);
}
else {
self.Carts.push(new Cart(
d.id,
d.stock_name,
d.stock_id,
d.quantity * 1,
d.selected_price,
d.selected_tax_price,
d.unit,
d.curr_id,
d.price,
d.rate,
d.product_no,
d.pack_id,
d.tax_rate,
));
console.log(self.Carts());
console.log(self.Carts().length);
}};
使用 indexOf
总是会给你 -1
因为你传递给它的是一个字符串(例如 '97454'
),而你的 Carts
数组不是字符串,而是对象。
你应该使用 ko.utils.arrayFirst
:
ko.utils.arrayFirst(self.Carts(), function(cart) {
return cart.id() === '97454';
})
顺便说一句,我认为您不想要一个名为 Carts
的对象,而是 CartItems
.