【问题标题】:Knockout not binding Json to multiple Select淘汰赛未将 Json 绑定到多个 Select
【发布时间】:2014-07-01 03:00:35
【问题描述】:

我无法使用 Knockout 将 json 数据绑定到选择列表。发生的情况是选择列表是使用每个 json 记录的选项创建的,但它没有将任何数据绑定到列表。本质上它是一堆空选项。我什至可以通过控制台在 applyBindings() 之后查看视图模型中的数据,因此我知道数据就在那里。我是淘汰赛的新手,所以我可能会遗漏一些东西。请帮忙

var resources = [{"Resource":{"Id":1,"Name":"Bob"}},{"Resource":{"Id":2,"Name":"Jim"}}];

var viewModel = { resourceList: ko.observableArray(resources)}
ko.applyBindings(viewModel);


<select multiple="multiple" data-bind="options: resourceList, optionsText: 'Name', optionsValue: 'Id'">

【问题讨论】:

    标签: javascript json knockout.js


    【解决方案1】:

    resourceList 中的对象不包含 NameId 属性,它们包含一个 Resource 对象。

    您需要将每个资源投影到这些对象并绑定到该对象:

    var viewModel = {
        resourceList: ko.observableArray(resources),
        resourceListProjection: ko.dependentObservable(function () {
            return ko.utils.arrayMap(this.resourceList(), function (o) {
                return o.Resource;
            });
        }, viewModel);
    };
    

    或者创建访问器函数来获取适当的属性。

    <select multiple="multiple"
        data-bind="options: resourceList,
                   optionsText: function (o) { return o.Resource.Name; },
                   optionsValue: function (o) { return o.Resource.Id; }">
    

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2014-03-20
      • 2023-04-03
      • 2013-02-04
      • 2021-04-28
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多