我有一个knockoutjs应用程序,它允许用户添加两个值,一个在文本框中,另一个在下拉列表中,如图所示here..
<button class="btn btn-success" data-bind="click: addEvnt">Add New</button>
<table class="panels">
<tbody data-bind="foreach: evnts"><tr>
<td><input type="text" class="form-control" data-bind="value: property" style="width:200px" /></td>
<td>
<select class="form-control" data-bind="foreach: $root.propertytypes, value: propertytype" style="width:150px">
<option data-bind="value: $root.propertytypes.indexOf($data), text: $data"></option>
</select>
</td>
</tr></tbody></table>
var AppScope = function () {
function Evnt(data) {
this.property = ko.observable(data.property);
this.propertytype = ko.observable(data.propertytype);
}
function EvntsViewModel() {
var self = this
self.propertytypes = ko.observableArray(["String", "String-Array"]);
self.evnts = ko.observableArray([
]);
self.addEvnt = function () {
self.evnts.push(new Evnt({ property: "", propertytype: 0 }))
}
}
ko.applyBindings(new EvntsViewModel());
}();
到目前为止工作正常......
我需要的是什么 如果用户选择&#39; String&#39;在下拉列表..,应用程序应该按原样运行..
如果用户选择&#39; String-Array&#39;在下拉列表中..他应该看到一个文本框和一个&#39;添加按钮&#39;并能够添加不同的值
所以现在self.events中的值是{property:&#34; ProductName&#34;,propertytype:1}
我需要它像{property:&#34; ProductName&#34;,propertytype:1,optionvalues:[&#34; Alpha&#34;,&#34; Beta&#34;,&#34;伽马&#34;]}
我尝试了一些事情here,但它无效......
真诚地感谢任何帮助...
由于
答案 0 :(得分:0)
请将此行更改为以下行:
<!-- ko if: propertytype() == "1" -->
因为propertytype是一个可观察的,我们必须使用括号来获取它的值。并使用==来比较其值而不是数据类型。
更新了JSfiddle: http://jsfiddle.net/j3rua8tp/5/