私はLaravel 5.3でtwitter先読みを使用しています。 、候補をプルダウンでデータのリモートソースJSON配列は、jsオブジェクトの配列にマッピングされる先読みでこのオブジェクトにアクセスするにはどうすればよいですか?
[
{
"id": 2,
"name": "iphone",
"created_at": "2017-02-08 06:12:34",
"updated_at": "2017-02-08 06:12:34",
"user_id": 1,
"brand_id": 1,
"msds_url": "google.com",
"gravity": 1.03,
"recipe_id": null,
"relevance": 210,
"brand": {
"id": 1,
"name": "apple",
"created_at": "2017-02-08 03:00:49",
"updated_at": "2017-02-08 03:00:49",
"user_id": 1,
"abbreviation": "AP",
"visible": 1
}
}
]
はvalue
と呼ばれる:だけ知っているので、ここでの私のデータは、製品のためだとそのメーカーのブランド(FK)と一緒にそれは書かれたようにフォーマットされます「アップル - iPhone」いくつかのデータに、1、および2になりproduct.id
だろうbrand.id
を唱えている私は何もやってみたい
var engine = new Bloodhound({
datumTokenizer: function(datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
wildcard: '%QUERY',
url: '/find?q=%QUERY%',
transform: function(response) {
console.log(response);
// Map the remote source JSON array to a JavaScript object array
return $.map(response, function(product) {
return {
value: product.brand.name+' - '+product.name,
other: product
};
});
}
}
});
// Instantiate the Typeahead UI
$('#search').typeahead(null,{
display: 'value',//choose a key from the map
highlight: true,
hint: true,
source: engine
});
は同じ入力の属性、私はイベントを捕獲し、「選択した提案をログに記録しましたユーザーが取ったそれは、マップ関数内で、具体的にフォーマットされますので、
$("#search").on("typeahead:select", function(ev, suggestion) {
console.log(suggestion);
});
問題は、それが私のデータの完全な配列へのアクセス権を与えないということであるブラッドハウンド部から
// Map the remote source JSON array to a JavaScript object array
return $.map(response, function(product) {
return {
value: product.brand.name+' - '+product.name, //this format
other: product //full access to object
};
});
だから私はother
にdisplay
を切り替えますvalue
の代わりに、ブランド名と製品名の代わりに完全なオブジェクトが渡されるようにします。提案はドロップダウンに起動したとき、私は前とは違って、まだそれをアクセスしていないので、
$('#search').typeahead(null,{
//display: 'value',
display: 'other',
highlight: true,
hint: true,
source: engine
});
さて、それは[object object]
を言うだろう。
オブジェクトにアクセスして適切にフォーマットし、ブランドIDと商品IDにアクセスするにはどうすればよいですか?これは、フォームを送信した後、選択した商品IDと商品テーブル項目を一致させるためのものです。
完璧な作品!あなたのコードにいくつかの説明を追加してください。私は間違いなく他の人がそれがどのように動作するかを理解したいと思うでしょう。 – ProEvilz
私はあなたの答えを受け入れることができます:) – ProEvilz
3 - 4年前にそれを実装して以来、私は決してこのコードを変更していないし、あなたのコードは、データと '' source:engine'''文を操作するマップ関数に問題があったと思います。 – Dev