【问题标题】:how to access an objects element based on its name如何根据名称访问对象元素
【发布时间】:2015-11-20 14:29:28
【问题描述】:

我有一个从控制器捕获的可观察数组,当我从 js 使用 ko.mapping 时,它会显示整个对象,如何从对象访问数组元素。目前它返回 something"{"driverId":1,"driverName":"Simon Jenkins",}" 我如何只选择名称而不是 ID,反之亦然

    if (!pageViewModel.isAuthenticated()) return;
$.when(getSecureData("/api/vehicleDrivers/" + id))
.done(function (driverList) {
    driverList.unshift({ "driverId": 0, "driverName": "Please select a driver..." });
     pageViewModel.DriverVM.driverList(driverList);
     pageViewModel.vehicleVM.driverDetail.driverId(ko.mapping.fromJS(driverList));


    /*var List = driverList;
    List[0] = pageViewModel.VehicleVM.driverDetail.driverId;
    List[1] = pageViewModel.vehicleVM.driverDetail.driverName;*/
})
.fail(function (message) {
    $.msgbox(message);
});

}

【问题讨论】:

  • 能提供plunker的jsfiddle吗? 目前它返回 something"{"driverId":1,"driverName":"Simon Jenkins",}" 我如何只选择名称而不是 ID,反之亦然:你的意思是.driverId 之类的东西?
  • @Grundy 是这样的
  • 究竟是什么不工作?我不确定你在问什么。

标签: javascript asp.net-mvc-4 knockout.js single-page-application javascript-objects


【解决方案1】:

如果您想在映射时忽略某些属性,可以使用ignore option。如果要指定包含哪些字段,可以使用ko.utils.arrayMap进行预处理

var driverIdList = ko.utils.arrayMap(driverList, function (item) {
    return item.driverID;
});

然后您可以使用 ko.mapping 将其转换为 observables,或者将其传递给 observableArray。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2020-06-15
    • 2023-01-11
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多