私はこれがほとんどの場合、すばやく簡単なものになると感じていますが、私にとっては少なくとも解決策は分かりにくいものです。拡張jqueryウィジェットのオートコンプリート
jQueryオートコンプリートウィジェットを拡張して、デフォルトとしていくつかの機能を追加します。 selectイベントでthis.options.primaryFieldを参照する必要があります。ここ
$.widget("mynamespace.myAutoComplete", $.ui.autocomplete, {
options: {
// our options
selectedId:0,
searchString:'',
indexField:'',
primaryField:'',
secondaryField:'',
// set existing ones
autoFocus: true,
minLength:3,
select: function(event,ui) {
// runs, but cant access this.options.<anything>
}
},
_myselect: function (event,ui) {
//does not run
console.log("in myselect");
},
_renderItem: function (ul, item) {
var icon='marker';
return $("<li>")
.append ('<div><a><i class=\"fi-' + icon + '"></i>' + item[this.options.primaryField] + "<br>" + item[this.options.secondaryField] + "</a><div>")
.appendTo (ul);
}
});
私が見つけた解決策: Howto access data held in widget options when inside a widget event handler、 jQuery Widget Factory access options in a callback methodとjQuery-ui: How do I access options from inside private functions
しかし、私はそれらのいずれかを動作させることはできません。私はちょうど(当然の$ .widgetに追加する(...クラス)
_create: function() {
// does not fire _myselect on select
this._on(this.select, { change: "_myselect"});
this._on(this.select, $.proxy(this._myselect, this));
this._on(this.select, $.bind(this._myselect, this));
this._super();
},
私も同様_init機能にそれらを追加しようとしました:これは私がこれらのソリューションから派生したコードです項目をクリックするとthis.options.selectedId、searchStringの、などを設定できるようにしたい事前に
おかげ