【发布时间】:2014-08-03 18:50:49
【问题描述】:
过去几天我已经阅读了很多文章、快速入门和教程,但或多或少是全部在创建之后,但我想反其道而行之。
只要下拉列表被填充,并且如果 textarea 为空,按钮将被禁用,那么下面的淘汰竞标就可以正常工作,但这就是我到目前为止所拥有的全部。
我使用的视图模型和数据可以在这里找到:Child collection mapping not firing 我不知道我是否应该将它们复制到这里,或者将它们保留在单独的线程中以便于阅读
我希望实现的是在我的集合“文本”中添加一个新的可观察项目,并在单击按钮时使用下拉列表中的语言和文本区域中的文本。
下面的这部分是绑定到我的根视图模型上集合的“selectedItem”的引导模式内容的一小部分。
<div class="modal fade" data-backdrop="static" data-bind="showModal:selectedItem, with:selectedItem">
<!-- Here is code for enumerating from collection "Texts", but i removed it for readability, and put focus on the "Add part" below -->
<div class="form-group">
<label class="col-md-3 control-label col-md-offset-2">Language</label>
<div class="col-md-6">
<select data-bind="options: $root.AvailableLanguages, optionsText:'Name', optionsValue:'Id'" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label col-md-offset-2">Translation</label>
<div class="col-md-6">
<textarea class="form-control" data-bind='value: $root.itemToAdd, valueUpdate: "afterkeydown"'></textarea>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label col-md-offset-2"><button class="btn btn-primary btn-sm" data-bind="click: addItem, enable: $root.itemToAdd().length > 0">Add</button></label>
</div>
</div>
【问题讨论】:
-
你能创建一个 jsfiddle 来展示你无法工作的东西吗?
-
jsfiddle.net/cSE5X/2 - 我从未使用过 JSFiddle,所以我不知道该添加什么,但这基本上是我今天所拥有的。如果我绑定 addValues 以在表单标签上提交它不会被触发,并且页面被发布,但是如果我将它绑定到单击它被触发的按钮,但是如果我使用 alert(ko.toJSON(element)) 进行调试,我在“selectedItem”中获取模型,而不是从我的表单中获取模型。
-
对不起,我仍然无法弄清楚你想要做什么。在最简单的层面上,您想要实现什么?去掉任何无关紧要的东西,然后告诉我确切的问题。听起来您只想单击一个按钮并将一个新项目添加到具有两个值的集合中,一个来自下拉列表,另一个来自文本框,是否正确?
-
没错。我的描述非常分散。我想单击一个按钮,然后从下拉列表和文本区域中获取值并将其插入到子集合中。
标签: knockout.js