如果用户在dropdownlist knockoutjs中选择一个值,则显示文本框

时间:2014-12-10 07:24:20

标签: knockout.js

我有一个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,但它无效......

真诚地感谢任何帮助...

由于

1 个答案:

答案 0 :(得分:0)

请将此行更改为以下行:

<!-- ko if: propertytype() == "1" -->

因为propertytype是一个可观察的,我们必须使用括号来获取它的值。并使用==来比较其值而不是数据类型。

更新了JSfiddle:         http://jsfiddle.net/j3rua8tp/5/