मैं वस्तुओं की एक संपादन योग्य सूची प्रदर्शित करना चाहता हूं, जिनमें से प्रत्येक आइटम संपादन योग्य है (एक संपादन योग्य ग्रिड की तरह, एक तरह से)। मैं नॉकआउटजेएस का उपयोग कर रहा हूं। मैं सिर्फ एक साधारण अवलोकन योग्य ऐरे का उपयोग नहीं कर सकता क्योंकि, दस्तावेज कहता है, "एक अवलोकन योग्य ऐरे ट्रैक करता है कि कौन सी ऑब्जेक्ट्स सरणी में हैं, न कि उन वस्तुओं की स्थिति"नॉकआउटजेएस - अवलोकन योग्य वस्तुओं का अवलोकननीय अरे
इसलिए, मैंने अवलोकन योग्य वस्तुओं (utils का उपयोग करके) का एक अवलोकन योग्य बनाया है। arrayMap), और उन्हें देखने के लिए बाध्य। हालांकि, समस्या यह है कि यदि मैं स्क्रीन पर डेटा संपादित करता हूं, तो उपयोगकर्ता द्वारा स्क्रीन पर किए गए किसी भी डेटा-एंट्री परिवर्तन प्रभावी नहीं होते हैं। http://jsfiddle.net/AndyThomas/E7xPM/
मैं क्या गलत कर रहा हूं?
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.0.0/knockout-min.js" type="text/javascript"></script>
<table>
<tbody data-bind="template: { name:'productListJavascriptTemplate', foreach: products}">
</tbody>
</table>
<script type="text/html" id="productListJavascriptTemplate">
<tr>
<td>Name: <input data-bind="value: Name"/></td>
<td>Name: <span data-bind="text: Name"/></td>
<td><select data-bind="options: this.viewModel.categories,
optionsText: 'Name', optionsValue: 'Id', value: CategoryId,
optionsCaption: 'Please select...'"></select></td>
<td>CategoryId: <input data-bind="value: CategoryId"/></td>
</tr>
</script>
var categoryList= [
{
Name: "Electronics",
Id: "1"},
{
Name: "Groceries",
Id: "2"}
];
var initialData= [
{
Name: "Television",
CategoryId: "1"},
{
Name: "Melon",
CategoryId: "2"}
];
var viewModel = {
products: ko.observableArray(
ko.utils.arrayMap(initialData, function(product) {
return ko.observable(product);
})),
categories: ko.observableArray(categoryList)
};
$(function() {
ko.applyBindings(viewModel);
});
सही धन्यवादएसएसएसएस! – Andrew