0

我以前从未在淘汰赛中这样做过,所以我肯定是做错了什么。

我在这里有一个 jsfiddle 显示问题:http: //jsfiddle.net/pdavis68/xebq7/

这是相关的HTML:

    <!-- ko foreach: Parameters -->
        <select data-bind="attr: { id: Name }">
            <!-- ko foreach: $parent.ValidValues -->
            <option data-bind="value: Value, text: Label"></option>
            <!-- /ko -->
        </select>
    <!-- /ko -->

和相关的Javascript:

var ViewModel = function () {
    var self = this;
    self.Parameters = ko.observableArray();
}
var currentItem;

$(document).ready() {
    currentItem = new ViewModel();       
    ko.applyBindings(currentItem);

    currentItem.Parameters.push(
        [{"Name":"WarehouseCode", "ValidValues":
          [{"Label":"Warehouse 1-- (01)","Value":"01"},
           {"Label":"Warehouse 2 -- (02)","Value":"02"}]}]);
}

当然,我的目标是让 ValidValues 用于填充<option>我的标签<select>,正如您从 jsFiddle 中看到的那样,这并没有发生。

如何更正我的 HTML?

谢谢。

4

1 回答 1

0

你有几个问题:

  1. 你的document.ready(...)语法是错误的。您希望该块看起来像:

    $(document).ready(function () { ... }); // <-- note the "function"
    
  2. 您正在将一个数组推入可观察的项目数组中。您真的想用新值更新可观察数组:

    currentItem.Parameters([{
        "Name": "WarehouseCode",
        "ValidValues": [{
            "Label": "Warehouse 1-- (01)",
            "Value": "01"
        }, {
            "Label": "Warehouse 2 -- (02)",
            "Value": "02"
        }]
    }]);
    
  3. 您在小提琴中既不包括 KnockoutJS 也不包括 jQuery。

更新示例:http: //jsfiddle.net/xebq7/1/

于 2013-02-22T22:38:34.080 回答