设置下拉的淘汰赛对象绑定(Set the binding of a dropdown in knoc

2019-10-17 15:38发布

我想尝试设置绑定一个下拉列表(剑道下拉)使用一个完整的对象。 我使用的淘汰赛剑道来完成结合,但我不认为剑道的东西或敲除剑道的东西是我的问题的一个因素。

例如我有以下对象

var model = {
  "Client": null,
  "Clients": [
    {
      "CompanyAccount": {
        "RelationshipManager": {},
        "CompanyAccountId": 1,
        "Name": "My Company Name",
        "PhoneNumber": "(555) 555-5555",
        "Address": {
          "State": {
            "StateId": 6,
            "Name": "New York",
            "Abbreviation": "NY"
          },
          "AddressId": 1,
          "Street1": "123 Any Street",
          "Street2": null,
          "City": "New York",
          "StateId": 6,
          "Zip": 12345
        }
      },
      "ClientId": 1,
      "Name": "New Client 1/30/2013",
      "CompanyAccountId": 1,
      "ContactName": null,
      "Salutation": null,
      "ClientAddress": null,
      "OfficePhoneNumber": null,
      "OfficePhoneExtension": null,
      "MobilePhoneNumber": null,
      "Email": null,
      "TrackingState": 0
    }
  ]
  }
}

我用的是淘汰赛映射插件把所有的东西变成可观察到的。

VAR视图模型= ko.mapping.fromJS(模型); ko.applyBindings(视图模型);

我的HTML结合这个样子的

<select data-bind="kendoDropDownList: { dataTextField: 'Name', optionLabel: 'Select An Client...', dataValueField: 'ClientId', data: Clients, value: Client }"></select>

但我想设置Client与数据等财产

Client: {
  "CompanyAccount": {
    "RelationshipManager": {},
    "CompanyAccountId": 1,
    "Name": "My Company Name",
    "PhoneNumber": "(555) 555-5555",
    "Address": {
      "State": {
        "StateId": 6,
        "Name": "New York",
        "Abbreviation": "NY"
      },
      "AddressId": 1,
      "Street1": "123 Any Street",
      "Street2": null,
      "City": "New York",
      "StateId": 6,
      "Zip": 12345
    }
  },
  "ClientId": 1,
  "Name": "New Client 1/30/2013",
  "CompanyAccountId": 1,
  "ContactName": null,
  "Salutation": null,
  "ClientAddress": null,
  "OfficePhoneNumber": null,
  "OfficePhoneExtension": null,
  "MobilePhoneNumber": null,
  "Email": null,
  "TrackingState": 0
}

我只能想出如何与像“1”或“新客户2013年1月30日”数据集属性

*编辑我试图设计这个,因为我缺乏与实体框架的经验。 如果我有一个外键和被拴在我的模型外键发送到客户端的对象。 更新外键,但不是模型的SaveChanges调用时造成的型号不一致状态异常()。 我觉得我的最好的办法,现在是创建一个没有这些对象(仅包含ForeignKey的IDS)的一个视图模型。

Answer 1:

这剑道UI插件不支持该值设置为对象。 您将需要将该值设置为一个唯一的密钥( ClientId ),然后使用一个计算观察到的检索实际的对象。

喜欢的东西: http://jsfiddle.net/rniemeyer/xz2uY/

this.selectedId = ko.observable("2");
this.selectedChoice = ko.computed(function() {
    var id = this.selectedId();
    return ko.utils.arrayFirst(this.choices(), function(choice) {
       return choice.id ===  id;
    });
}, this);


文章来源: Set the binding of a dropdown in knockout to an object