【问题标题】:Knockout arrayFirst with MVC List使用 MVC 列表淘汰 arrayFirst
【发布时间】:2015-10-09 12:27:52
【问题描述】:

我的 MVC 视图模型包含许多属性,包括对象列表。

此模型与淘汰模型绑定如下:

 viewModel = new DynamicModelLoading(@Html.Raw(Model.ToJson()));
 ko.applyBindings(viewModel);

查看淘汰模型时,我可以看到我的列表已成功创建为数组。

我遇到的问题是,每当我在数组上使用 arrayFirst 时,它总是返回 null。我可以在 javascript 中创建一个 observablearray 并且 arrayFirst 工作正常。

var match = ko.utils.arrayFirst(viewModel.activeList(), function (item) {
    return 2 === item.id;
});

为了能够将 arrayFirst 应用于已从我的 MVC 模型绑定的数组,我做错了什么吗?

【问题讨论】:

  • 你能展示一下viewModel.activeList() 的样子吗,或许可以通过控制台转储它?
  • 试试return 2 == item.id() 我希望它是可观察的。欢呼
  • 好的,这提供了更多的洞察力,但我仍然没有更接近理解原因。 JSON.stringify(viewModel.activeList()) 只返回“[{},{},{},{},{},{},{}]”。但在淘汰赛上下文中,我可以看到一个充满有效对象的数组。
  • 尝试@supercool 建议,否则如果无法观察到,则尝试返回 2 == item.id;
  • 是的,试过了。不工作。似乎与淘汰赛映射有关,但我不知道是什么

标签: arrays asp.net-mvc knockout.js


【解决方案1】:

好的,我终于猜到了。映射器将可观察数组创建为一个充满可观察属性的对象数组。因此只需声明:

return 2 === item.id();

而不是返回

2 === item.id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2013-06-15
    • 2015-05-26
    • 2016-05-27
    相关资源
    最近更新 更多