我使用sergeyt:typeahead
在我的流星應用程序中創建了一個typeahead搜索字段。來自typeahead搜索輸入的日誌信息
現在我想記錄所有的搜索請求,以知道我的數據庫中缺少哪些信息。事情是,用戶可能不會按輸入。由於typehead功能,用戶將輸入一些字符,如果沒有結果,他們可能會中止輸入。一些用戶將刪除輸入以嘗試其他關鍵字。如果技術上可行,我希望獲得這些信息。
所以首先我要檢查typeahead有多少結果給我,但我不知道從哪裏得到這些信息。
這是我到目前爲止的代碼:
Template.search.helpers({
searchData: function() {
return [
{
name: 'cat1',
valueKey: 'title',
displayKey: 'title',
header: '<h3 class="category-name">Category 1</h3>',
template: 'searchResults',
local: function() { return Collection.find().fetch(); }
}
]
},
selected: function(event, suggestion) {
if (Router.routes[suggestion.type] === void 0) {
console.warn('Route not found');
return;
}
else Router.go(suggestion.type, { _id : suggestion.id });
}
});
我會爲模板事件開始:
Template.search.events({
'submit form': function(event, template) {
event.preventDefault();
var newElement = template.firstNode.children[0][1].value;
Log.insert({ title: newElement, missing: true });
},
'keyup input': function(event, template) {
var keyword = event.target.value;
Log.insert({ title: keyword });
}
});
提交事件:所以如果用戶按下回車,關鍵字將被保存到集合中。但是這是非常糟糕的,因爲如果沒有鍵入結果,就會發生這種情況,因爲用戶可以選擇一個建議,然後按回車鍵以獲得該結果,但是使用我的代碼,這將被覆蓋...
鍵盤事件:問題是,每個鍵盤事件都會被跟蹤。對於輸入'正在搜索',將會有14個插入到集合中。這不是我想要的。如果我使用更改事件,輸入必須弄清楚,這也不是我所需要的。
所以這在我看來不是最好的方法。
也許有可能使用typeahead.js的自定義事件,如typeahead:render
。
這是一個很好的主意,但我仍然有問題,提交事件將覆蓋typeahead-enter-event。 – user3848987
我會使用「輸入」事件。這將處理鍵盤事件以及複製/粘貼。也許與'blur'結合使用 –
可以在沒有underscore.js的情況下進行節流嗎?我只是問,因爲underscore.js有很多的功能,但我不需要它們...... – user3848987