Note that there are some explanatory texts on larger screens.

plurals
  1. POSetting observable from select list in knockout.js
    primarykey
    data
    text
    <p>I'm trying to use the value of a select list for a calculation but I can't get it to retrieve the number when it's selected. </p> <p>When I return the selected quantity it returns some javascript instead of the number</p> <p>selectedQuantity is the value I'm trying to retrieve.</p> <pre><code>&lt;table border="1"&gt; &lt;thead&gt;&lt;tr&gt; &lt;th&gt;ID&lt;/th&gt;&lt;th&gt;Inventory&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt;&lt;th&gt;Price&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;th&gt;&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt; &lt;tbody data-bind="foreach: itemNumbers"&gt; &lt;tr&gt; &lt;td data-bind="text: ID"&gt;&lt;/td&gt; &lt;td data-bind="text: inventory"&gt;&lt;/td&gt; &lt;td&gt;&lt;select data-bind="quantityDropdown: inventory, value: selectedQuantity"&gt;&lt;/select&gt;&lt;/td&gt; &lt;td data-bind="text: formattedPrice"&gt;&lt;/td&gt; &lt;td data-bind="text: itemTotal"&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="#" data-bind="click: $root.removeItem"&gt;Remove&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; </code></pre> <p>Here's the javascript</p> <pre><code>function ItemEntry(ID, inventory, price) { var self = this; self.ID = ID; self.inventory = inventory; self.price = price; self.selectedQuantity = ko.observable(); //returned value (trying to get it at least!) self.itemTotal = ko.computed(function() { var price = self.price; var quantity = self.selectedQuantity; return quantity; //just returning quantity for now to verify correct value is selected }); self.formattedPrice = ko.computed(function() { var price = self.price; return price ? "$" + price.toFixed(2) : "None"; }); } function EntryViewModel(newItem) { var self = this; self.newItem = newItem; //start the array with some items self.itemNumbers = ko.observableArray([ new ItemEntry("1", 20, 22.50) //ID, inventory, price ]); // Computed data self.totalCost = ko.computed(function() { var total = 0; for (var i = 0; i &lt; self.itemNumbers().length; i++) { total += Number(self.itemNumbers()[i].price); } return total; }); self.removeItem = function(item) { self.itemNumbers.remove(item) } } //populate the select list with values up to the number in inventory (ex, if inventory is 3, it will fill with 0-7) ko.bindingHandlers.quantityDropdown = { update: function(quantityDropdown, inventory, EntryViewModel) { var quantity = ko.utils.unwrapObservable(inventory()); for(var i = 0; i &lt;= inventory(); i++){ $(quantityDropdown).append('&lt;option value="' + i + '"&gt;' + i + '&lt;/option&gt;'); } } }; ko.applyBindings(new EntryViewModel()); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload