【发布时间】:2015-06-18 14:59:25
【问题描述】:
我正在使用 BreezeJs 进行淘汰赛,以从我的本地数据库中检索和存储数据。我在这里面临的问题是菜单中的键值绑定。 我想要做的是显示并从选择菜单中选择“名称”属性并将相应的“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]
如何从选择菜单中显示和选择“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。
注意:我正在使用breathJS从数据库中获取和存储数据,这就是我提到它的标签的原因,尽管上面的问题是淘汰赛而不是微风。
【问题讨论】:
-
将
optionText更改为optionsText和optionvalue更改为optionsValue。 -
您的第一个问题是关于 select 元素的选项敲除绑定。看起来它已经解决了。对吗?
-
第二个问题是你从数据库加载了一个数组(observable),这个数组通过敲除绑定到一些控件,最后你希望输入的值保存到数据库中。正确的?那么负责从数据库加载数据并将它们存储回来的代码在哪里呢?
-
@TSV 绑定问题已较早解决,如果您愿意,可以查看此代码,但到目前为止,我进行了一些更改,因此不要使用变量名称,但该代码仍然可以正常工作。 stackoverflow.com/questions/28446415/…
-
我在您的代码中发现了两个问题:第一个 - 淘汰赛选择选项,第二个 - BreezeJs 库的使用。这就是为什么我建议拆分这个问题。第二个应该 IMO 包含小的完整样本,说明问题。
标签: knockout.js breeze