2014-12-10 3 views
-1

У меня есть приложение knockoutjs который позволяет пользователю добавить два значения, одно в текстовом поле, а другой в DropDownList, как показано here..Отображение текстовых полей, если пользователь выбирает значение в DropDownList knockoutjs

<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()); 
    }(); 

Upto это работает отлично ...

Что мне нужно , если пользователь выбирает «Строка» в раскрывающемся downlist .., приложение должно работать как есть ..

если пользователь выбирает «S tring-Array 'в раскрывающемся списке вниз. Он должен видеть текстовое поле и кнопку «Добавить» и иметь возможность добавлять разные значения.

Итак, теперь значение в self.events равно {property: "ProductName", propertytype: 1}

Мне нужно, чтобы это было как {собственность: "ProductName", PropertyType: 1, optionvalues: [ "Альфа", "бета", "Гамма"]}

Я попробовал несколько вещей here но не работает.

Искренне признателен за любую помощь ...

Благодаря

ответ

0

Пожалуйста, измените эту строку в строку ниже:

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

Поскольку PropertyType является наблюдаемым, мы должны использовать круглые скобки, чтобы получить его значение. И используйте ==, чтобы сравнить его значение, а не тип данных.

Обновлено JSfiddle: http://jsfiddle.net/j3rua8tp/5/

+0

Thanks..In ваш пример, optiontoadd() не определен приходит на в console.log .. любая идея, как решить, что .. – Arnab

+1

пожалуйста найти обновление Fiddle: HTTP: // jsfiddle.net/j3rua8tp/6/ –

Смежные вопросы