2013-05-30 3 views
0

Я искал все, но не смог найти ответ на мой вопрос. Я инициализация автозаполнения виджета как следующее:KendoUI: MVVM Autocomplete Events

Этот код загружаются в мой DOM в результате запроса Ajax:

<div id="view_ticketCreate"> 
    <form id="jar_ticketing_create"action="" class="k-block jar-container"> 
     <fieldset class="login"> 
      <legend>Kontaktinformationen</legend> 
      <p class="notice">Definieren Sie hier die Kontaktinformationen zu diesem Ticket.</p> 
      <p> 
       <label>Kunde</label> 
       <input data-role="autocomplete" data-bind="source: customers, events{click: inject}" data-text-field="CName" placeholder="Suchen Sie nach dem Kunde" type="text" id="jtc_cID" class="k-textbox sourced"> 
      </p> 
      <p> 
       <label>Kontakt</label> 
       <input type="text" name="jtc_cName" class="k-textbox"> 
      </p> 
      <p> 
       <label>E-Mail</label> 
       <input data-bind="value: cMail" type="text" name="jtc_cMail" class="k-textbox"> 
      </p> 
      <p> 
       <label>Telefon</label> 
       <input data-bind="value: cPhone" type="text" name="jtc_cPhone" class="k-textbox"> 
      </p> 
      <p> 
       <label>Gerät</label> 
       <select name="dID" class="k-textbox sourced"> 
        <option value="000">Nicht geräte spezifisch</option> 
        <option value="001">CFBS01</option> 
        <option value="002">CFBS02</option> 
        <option value="003">CFBS03</option> 
        <option value="004">CFBS04</option> 
       </select> 
      </p> 
      <p> 
       <label>Login</label> 
       <input type="text" name="cLogin" class="k-textbox"> 
      </p> 
     </fieldset> 
</form> 
</div> 
<script> 
     kendo.bind($("#view_ticketCreate"), view_ticketCreate); 
</script> 

в моем основном (ом всегда загружены) JS файл я получил:

var view_ticketCreate = kendo.observable({ 
     customers: new kendo.data.DataSource({ 
      transport: { 
       read: { 
        url: "http://server/API/customers/search/", 
        dataType: "jsonp", 
        contentType: "application/json; charset=utf-8" 
       }, 
       parameterMap: function(options, operation) { 
        return { 
         SearchTag: options.filter.filters[0].value 
        } 
       } 
      }, 
      schema: { 
       data: "data" 
      }, 
      serverFiltering: true, 
      dataTextField: "CName", 
      select: function(e){ 
       if (e.item == null) return; 
       var DataItem = this.dataItem(e.item.index()) 
       cPhone: DataItem.Telefon 
      } 
     }), 
     inject: function(e){ 
      alert('ok') 
     }, 
     cPhone: "", 
     cMail: "[email protected]" 
}); 

Однако поиск автозаполнения работает идеально. Но теперь я хочу заполнить поля jtc_cMail и jtc_cPhone значениями из моего запроса на автозаполнение. Но либо функция select: Function работает (здесь не разрешено (угадайте, потому что MVVM?), А также умышленное впрыскивание инжекции.

Я ничего не смог найти, как мне нужно. Пожалуйста, помогите мне.

Привет

ответ

0

Просто надо использовать функцию e.sender.dataItem и передать в индекс выбранного элемента.

selectPerson: function(e) { 
var item = e.sender.dataItem(e.item.index()); 
viewModel.set("selectedPerson", item); 

}

См jsbi n http://jsbin.com/iLaK/3/edit

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