javascript - Knockout JS - Observable 在添加到数组时变为未定义

标签 javascript knockout.js

我有一个名为 purchase 的对象,它根据其状态被放入两个可观察数组之一。 purchase 对象有一个名为 integrationStatus 的可观察对象,我将其默认为 integration-status--complete

的 css 类名称

由于某种原因,Scheduled 数组中的购买按预期编码为绿色,但 Unscheduled 数组中的购买会引发错误,因为 integrationStatus 未定义

提前致谢

JS Fiddle

最佳答案

此问题与 Schedule 中的映射配置有关。映射调用 ko.mapping.fromJS(data, { scheduleDays : scheduleDayMapping }, self) 指示实用程序仅自定义来自 scheduleDays 对象的映射数据 变量。

由于该配置不包含 unallocatedHolder 的条目,映射实用程序使用默认的可观察创建行为而不是自定义行为。 UnallocatedHolder 函数从未被调用,因此它的 purchases 数组没有获得自定义映射。如果没有该映射,则不会为这些购买定义 integrationStatus

我建议像这样为 Schedule 定义一个新的映射配置:

var scheduleMapping = {
  "scheduleDays": scheduleDayMapping,
  "unallocatedHolder": {
    create: function(options) {
      return new UnallocatedHolder(options.data);
    }
  }
};

然后,通过将映射行更新为

,在Schedule 中引用这个新的映射配置
ko.mapping.fromJS(data, scheduleMapping, self);

Revised Fiddle

关于javascript - Knockout JS - Observable 在添加到数组时变为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46903549/

相关文章:

javascript - iPhone - JavaScript 事件...用于 Three.js

binding - 有没有办法找出 knockout 模型中的哪些变量当前绑定(bind)到 DOM?

knockout.js - 检查knockoutjs是否加载

knockout.js - John Papa 的 HotTowel this.handleError 未定义...为什么?

javascript - 在 javascript 中解析 UTF-8 XML

用于构建树节点层次结构的 javascript 库

javascript - 如何在没有全局 viewModel 的情况下将点击处理程序绑定(bind)到 knockoutjs 中的模板?

javascript - 将 knockout 绑定(bind)应用于模板并获取字符串形式的结果

javascript - 解决 AngularJS 中 mdDialog 和 API 响应之间的同步问题

javascript - 如何使用本地存储存储更多数据