[英]Populating select in knockout.js
我在淘汰表中有一個數量選擇選項,但我想根據可用庫存為其設置最大限制。
說我的條目具有以下值
ID = 1
stock = 8
我想在數量字段中填充數字1-stock,在這種情況下為1-8。 數量將始終小於或等於庫存。
function ItemEntry(ID, stock, quantity) {
var self = this;
self.ID= ID;
self.stock= stock;
self.quantity = quantity;
}
// viewmodel
function EntryViewModel() {
var self = this;
self.itemNumbers = ko.observableArray([
new ItemEntry("1", 8, QUANTITY HERE!) //initial starting values
]);
self.removeItem = function(item) { self.itemNumbers.remove(item) }
}
//custom binding for dropdown outside of models
ko.bindingHandlers.quantityDropdown = {
update: function(quantityDropdown, stock, EntryViewModel) {
var quantity = ko.utils.unwrapObservable(stock());
for(var i = 0; i < stock(); i++)
{
$(quantityDropdown).append('<option value="' + i + '">' + i + '</option>');
}
}
};
ko.applyBindings(new EntryViewModel());
這是HTML
<table border="1">
<thead><tr>
<th>ID</th><th>Stock</th><th>Quantity</th><th></th>
</tr></thead>
<tbody data-bind="foreach: itemNumbers">
<tr>
<td data-bind="text: ID"></td>
<td data-bind="text: stock"></td>
<td><select data-bind="quantityDropdown: quantity"></select></td>
<td><a href="#" data-bind="click: $root.removeItem">Remove</a></td>
</tr>
</tbody>
</table>
在視圖模型代碼之外創建自定義綁定:
ko.bindingHandlers.quantityDropdown = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var quantity = ko.utils.unwrapObservable(valueAccessor());
for(var i = 1; i < quantity + 1; i++)
{
// Add each option element to the select here
$(element).append('<option value="' + i + '">' + i + '</option>');
}
}
};
然后將綁定更改為:
<td><select data-bind="quantityDropdown: stock"></select></td>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.