2016-11-17 10 views
1

foreachノックアウトループでjQueryオートコンプリート拡張を統合しようとしています。私はカスタムバインディングとオートコンプリートを作成しました。しかし、オートコンプリート後、私は観察可能なアイテムモデルを更新する必要があり、それを行う方法を理解できません。カスタムknockoutjsバインディングで観測されたモデルを更新する

self.findValueCallback = function(item) { 
    return function(event, data, formatted) { 
     //u have access to particular item 
    } 
} 

と:

<!-- ko foreach: items --> 
<input data-bind="autoComplete: { source: '/products/item-search-ajax', options: { delay: 100, max: 20, minChars: 2, extraParams: { itcode: 1 }}, findCallback: $parent.findValueCallback }, value: PartNumber" type="text"> 
<!-- /ko --> 

<script type="text/javascript"> 

     ko.bindingHandlers.autoComplete = { 
      init: function (element, valueAccessor, allBindings, viewModel, bindingContext) { 
       var settings = valueAccessor(); 
       var source = settings.source; 
       var options = settings.options; 
       var findCallback = settings.findCallback; 
       $(element).autocomplete(source, options); 
       $(element).result(findCallback); 
       ko.bindingHandlers.value.init(element, valueAccessor, allBindings); 
      }, 
      update: function(element, valueAccessor) { 
       var value = valueAccessor(); 
       ko.bindingHandlers.value.update(element,valueAccessor); 
      } 
     }; 

     function QuoteViewModel() { 
      var self = this; 

      self.items = ko.observableArray(...); 

      self.findValueCallback = function(event, data, formatted) { 

       // Need to update Item model here from autocomplete 
      }; 
     } 

</script> 
+0

jQuery UI Autocomplete?これが完了しました。既存のバインディングハンドラを使用します。 http://gvas.github.io/knockout-jqueryui/autocomplete.html – Tomalak

+0

これは別のjqeuryオートコンプリートです。そして私は既にオートコンプリート拡張に接続することができました。観察可能なモデルをカスタムバインドから更新する方法はわかりません。 –

+0

さて、オートコンプリートライブラリはどちらですか? – Tomalak

答えて

0

あなたは基本的にのようなハンドラ関数を返す関数へ(項目モデルとなり、このforeachで)$dataオブジェクトを渡すことができます:ここでは私のコードですバインディング内:findCallback: $parent.findValueCallback($data)

関連する問題