嵌套复杂对象的Knockout映射

时间:2011-07-14 20:28:55

标签: javascript knockout.js

我有一个带有子对象的viewmodel。如何定义子对象属性的映射?

public class ViewModel
{
    public ManageComparatorSelectionsViewModel ManageComparatorSelectionsViewModel { get; set; }
    public ManageComparatorItemViewModel CurrentComparatorItem { get; set; }
}


public class ManageComparatorSelectionsViewModel
{
    public IList<Edition> Editions { get; set; }
    public IList<Year> Years { get; set; }
}

public class ManageComparatorItemViewModel
{
    public Edition ChosenEdition { get; set; }
    public Year ChosenYear { get; set; }
}

我正在执行以下操作来初始化淘汰赛

    var mapping = {
        'ManageComparatorSelectionsViewModel.Editions': {
            key: function (data) {
                return ko.utils.unwrapObservable(data.Id);
            }
        },
        'ManageComparatorSelectionsViewModel.Years': {
            key: function (data) {
                return ko.utils.unwrapObservable(data.Id);
            }
        }
    };
    var viewModel = ko.mapping.fromJS(viewModelData, mapping);

    ko.applyBindings(viewModel);

1 个答案:

答案 0 :(得分:0)

你有什么理由需要打开它吗?您可以通过获取属性()或通过执行您正在查看的 ko.toJS()项来获得相同的对象。

编辑:

下拉列表:

<select data-bind=" template : { 'name' : 'templateID', foreach : optionlist } "></select>

使用如下所示的模板:

<script type="html/text" id="templateID">
      <option value="${ key }">${ text }</option>
</script>