2016-08-03 5 views
0

私はKnockout JqAutocompleteプラグインを使用しています。オートコンプリートから項目を選択すると、その項目のIDと名前を選択します。 ノックアウトjqAutocomplete:IDと名前を選択するにはどうすればよいですか?

<table> 
    <tr> 
     <th>remote data</th> 
    </tr> 
    <tr> 
     <td> 
      <input data-bind="jqAuto: { source: remoteHandler, value: remoteValue, inputProp: remoteTest, labelProp: 'test', valueProp: 'val', options: { delay: 250 } }" /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <pre data-bind="text: ko.toJSON(remoteValue)"></pre> 
      <pre data-bind="text: ko.toJSON(remoteTest)"></pre> 
     </td> 
    </tr> 
</table> 



var ViewModel = function() { 
    this.remoteValue = ko.observable(); 
    this.remoteTest = ko.observable(); 
    this.remoteHandler = function(term, callback) { 
     setTimeout(function() { 
      callback([ 
       { test: term + "-1", val: 1 }, 
       { test: term + "-2", val: 2 }, 
       { test: term + "-3", val: 3 }, 
       { test: term + "-4", val: 4 }, 
       { test: term + "-5", val: 5 } 
      ]); 
     }, 500); 
    } 
}; 

ko.applyBindings(new ViewModel()); 

http://jsfiddle.net/arame3333/b0jqmmjt/1/

https://github.com/rniemeyer/knockout-jqAutocomplete

Iを参照してください、私はJqAutocompleteのドキュメントは非常によくそれを説明するように見えるけど、私はすべてのバリエーションを試してみて、私はそれを動作させることはできませんIdだけでなくテキストを表示したい。しかし、基本的なビューモデルでは、両方を更新したいと思っています。

+1

あなたは 'valueProp'オプションを削除した場合、全アイテムがremoteValue''に格納されます。 UIの 'text'プロップだけを表示するには、' with:remoteValue'と 'text:text'を使用してバインドします。 http://jsfiddle.net/vzbr76yg/ – user3297291

+0

ありがとうございます。私はあらゆる種類のバリエーションを試しましたが、私はそのバリエーションを考えませんでした。それは正解です。 – arame3333

答えて

0

dataValueオプションを使用できます。

dataValue - 指定されている場合、この観測可能オブジェクトには現在選択されているデータ項目が設定されます。

はフィドルを参照してください:http://jsfiddle.net/xommbn62/1/

関連する問題