使用键值对的敲除绑定

Knockout Bindings using Key value pair

我正在使用 BreezeJs 进行淘汰赛,以从我的本地数据库中检索和存储数据。我在这里面临的问题是菜单中的键值绑定。 我想要做的是 显示和 select select 菜单中的 'Name' 属性,并将相应的 'Id' 属性存储到我的数据库中。

直到现在我都在努力

var operators = [
{id: 0, name: 'addition'},
{id: 1, name: 'subtraction'},
{id: 2, name: 'division'},
{id: 3, name: 'multiplication'}
   ];

// 我的 html 绑定

<select data-bind="options: $root.operators , optionText: 'name', optionvalue: 'Id', value: operator"/>

// 这里 'operator' 是我试图以整数格式存储这个东西的数据库中的 colomnName。

但是根据我的代码显示输出为

[object object]

如何解决此问题以显示和 selecting select 菜单中的 'name' 属性 [varchar] 并存储相应的 'id' 属性 [int ] 到我的数据库。

//@TSV

html 绑定

 <div data-bind="with: jobs">
      <div>
        <label>FirstNumber :</label>
        <input data-bind="value: first_no" />
    </div>

         <div>
        <label>operator :</label>
         <select data-bind="options: $root.operators , optionsText: 'name', optionsValue: 'id', value: $root.operator"/>
    </div>
     <div>
        <label>Second Number:</label>
        <input data-bind="value: second_no" />
    </div><div>
        <label>Result :</label>
        <input data-bind="value: result" />
    </div></div>

// these(result,second_no,operator,first_no) 是我数据库中的列名,'jobs' 是一个 observableArray。

注意:我正在使用 breezeJS 从数据库中获取和存储数据,这就是为什么我提到它的一个标签,尽管上面的问题是淘汰赛而不是 breeze。

这段代码对我有用:

var operators = [
{id: 0, name: 'addition'},
{id: 1, name: 'subtraction'},
{id: 2, name: 'division'},
{id: 3, name: 'multiplication'}
   ];

ko.applyBindings({ operators: operators, operator: ko.observable(2) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>

<select data-bind="options: $root.operators, optionsText: 'name', optionsValue: 'id', value: 
$root.operator"/>

我已修复您代码中的以下问题:在 "division'}" 后插入逗号,更正了 "optionsText" 和 "optionsValue" 参数,optionsValue 应为 'id'.