用于嵌套复杂对象的淘汰映射

Knockout mapping for nested Complex Objects

本文关键字:淘汰 映射 对象 嵌套 复杂 用于      更新时间:2023-09-26

我有一个带有子对象的视图模型。如何定义子对象属性的映射?

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; }
}

我做了以下操作来初始化knockout

    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);

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

编辑:

下拉菜单:

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

使用如下模板:

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