- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果为空。
这是我的脚本:
function initialTypeaheadTest(){
var mo_selector = $('*[data-moT="mysearch"]');
var engine = new Bloodhound({
limit: 10
,prefetch: {url:'/api/action/getjsontest'}
//,remote: {url:'/api/action/getjsontest'}
,datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name')
,queryTokenizer: Bloodhound.tokenizers.whitespace
});
engine.clearPrefetchCache(); // only for test purposes
engine.initialize();
mo_selector.typeahead(
{
hint: true,
highlight: true,
minLength: 1
}, {
name: 'engine',
displayKey: 'name',
source: engine.ttAdapter(),
templates: {
empty: [
' '
].join('\n'),
suggestion: Handlebars.compile([
'{{title}}
',
'{{year}}'
].join(''))
}
});
}
这就是我的 json:
[{
"year":"02 Feb 2013 at 00:40 by anonymous",
"title":"JavaScript HTML DOM Changing HTML Content",
"value":"1",
"tokens":["JavaScript", "HTML", "DOM", "Changing", "HTML", "Content"]
},{
"year":"02 Feb 2013 at 00:42 by anonymous",
"title":"WDR.de",
"value":"2",
"tokens":["WDR.de"]
},{
"year":"02 Feb 2013 at 00:46 by anonymous",
"title":"Nachrichten, aktuelle Schlagzeilen und Videos - n-tv.de",
"value":"3",
"tokens":["Nachrichten", "aktuelle", "Schlagzeilen", "und", "Videos", "n", "tv.de"]
},{
"year":"02 Feb 2013 at 00:55 by anonymous",
"title":"JavaScript RegExp Object",
"value":"5",
"tokens":["JavaScript", "RegExp", "Object"]
},{
"year":"15 Feb 2013 at 23:24 by anonymous",
"title":"DotnetNuke Module Car Listing Module",
"value":"8",
"tokens":["DotnetNuke", "Module", "Car", "Listing", "Module"]
},{
"year":"08 Feb 2014 at 01:08 by advertiser",
"title":"Empfehlung",
"value":"1000",
"tokens":["Empfehlung"]
}]
原始路径:mattopen.com/api/action/getjsontest
对我来说,一切看起来都不错。 json 数据格式良好。所有字符串(例如在标记中)也用双引号引起来。为什么远程数据可以工作但预取却不能?
有人能指出我正确的方向吗?谢谢
1 Câu trả lời
除了正在设置的标记器
之外,您的设置中的一切都很好。因为您要在数据数组中返回 json 对象类型,所以您必须指定要标记化的 json 对象中的属性/字段。在您的代码中指定 tên
但您的 json 类型不包含 tên
。如果将其从 tên
更改为 tiêu đề
,一切都会按预期工作,然后搜索 tiêu đề
字段。
换行:
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name')
致:
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('title')
假设您想要使用tiêu đề
作为搜索索引的字段。如果您希望搜索另一个字段/属性,请将其更改为数组中列出的对象类型中存在的该字段/属性的名称。
如果您想使用您在对象中提供的标记,您可以通过提供一个完全执行此操作的函数来实现。将 datumTokenizer
行替换为:
,datumTokenizer: function (yourObj) {
return yourObj.tokens; // returns the tokens array in your object
}
顺便说一句,默认的 Bloodhound.tokenizers.obj.whitespace
意味着它将尝试用空格分割字符串。这也是为什么您在最后一个 token 实现中看不到它的原因,因为我假设您的 tokens
字段将始终包含您想要的完整字符串。
datumTokenizer – A function with the signature (datum) that transforms a datum into an array of string tokens. Required.
我还添加了 sufficient
并将其设置为 1,这告诉引擎如果至少返回 1 个项目(在本例中是从预取中返回的),则返回服务器不是必需的。
sufficient – If the number of datums provided from the internal search index is less than sufficient, remote will be used to backfill search requests triggered by calling #search. Defaults to 5.
此外,为了进行测试,您可以在站点根目录中的磁盘上创建一个文件(我们将其称为 prefetchData.json
),将 json 数据文本直接复制到您列出的此文件中在你的问题中,然后更改 url 以直接指向它。
prefetch: {url:'/prefetchData.json'}
这是经过上述更改的完整工作代码。现在,如果您输入 J
,您应该会得到 2 个返回结果。
function initialTypeaheadTest(){
var mo_selector = $('*[data-moT="mysearch"]');
var engine = new Bloodhound({
limit: 10
,sufficient:1
,prefetch: {url:'/prefetchData.json'}
//,remote: {url:'/api/action/getjsontest'} // left it commented out to prove it works
,datumTokenizer: Bloodhound.tokenizers.obj.whitespace('title')
,queryTokenizer: Bloodhound.tokenizers.whitespace
});
engine.clearPrefetchCache(); // only for test purposes
engine.initialize();
mo_selector.typeahead(
{
hint: true,
highlight: true,
minLength: 1
}, {
name: 'engine',
displayKey: 'name',
source: engine.ttAdapter(),
templates: {
empty: [
' '
].join('\n'),
suggestion: Handlebars.compile([
'{{title}}
',
'{{year}}'
].join(''))
}
});
}
关于jquery - 使用 “prefetch” 时 Twitter 预输入没有结果,但使用 “remote” JSON 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534060/
Tất cả những khác biệt đã biết giữa SQLite, Nhà cung cấp nội dung và Tùy chọn chia sẻ. Nhưng tôi muốn biết khi nào sử dụng SQLite hoặc Content Provider hoặc
CẢNH BÁO: Tôi đang làm việc với một backend mà tôi không kiểm soát hoàn toàn, vì vậy tôi đang vật lộn với một số cân nhắc trong Backbone có thể được giải quyết tốt hơn ở nơi khác... thật không may, tôi không có lựa chọn nào khác ngoài việc giải quyết chúng ở đây! Vì vậy,
Tôi đã vật lộn cả ngày rồi. Biểu thức tìm kiếm theo kiểu gõ đầu của tôi hoạt động hoàn hảo với dữ liệu json từ xa. Nhưng khi tôi thử sử dụng cùng dữ liệu json làm dữ liệu tìm nạp trước thì không có gợi ý nào cả. Sau khi nhấp vào dấu hiệu đầu tiên, tôi nhận được thông báo được xác định trước "Không tìm thấy bất kỳ thứ gì...", với kết quả
Tôi đang tạo một chương trình mô phỏng xổ số NHL, trong đó phải có một JTextField ở bên phải màn hình và quả bóng dự thảo nảy được vẽ ở bên trái. Tôi đã tạo một lớp có tên là Ball triển khai Runnable và trong Draf chính của tôi
Câu hỏi này đã có câu trả lời: Làm thế nào để tính khoảng thời gian trong Java và định dạng đầu ra? (18 câu trả lời) Đã đóng 9 năm trước. Đây là mã của tôi
Tôi có một ứng dụng ASP.NET Web API đang chạy trên phiên bản IIS cục bộ của mình. Ứng dụng web được cấu hình bằng CORS. Phương pháp Web API mà tôi gọi tương tự như: [POST("/API/{foo}/{ba
Tôi lấy thời gian và ngày tháng đầu vào của người dùng như sau: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePicker
Liệu việc nới lỏng tiêu chuẩn “hàng xóm” có đủ không, hay có những hành động tiêu chuẩn khác có thể được thực hiện? Câu trả lời hay nhất Nếu tất cả các giải pháp liền kề đều là Tabu, có vẻ như danh sách Tabu của bạn quá dài hoặc chính sách phát hành của bạn quá nghiêm ngặt. Độ dài danh sách Tabu tốt là
Tôi đang đọc ví dụ mã này từ cppreference: #include #include #include #include template void print_queue(T& q)
Tôi phát điên mất, tôi đang cố gắng hiểu hành vi của chú giải công cụ nhưng không thành công. 1. Vấn đề đầu tiên là khi tôi thử sử dụng nó trong sự kiện nhấp chuột thông qua plugin (Nút 1) -> Nếu bạn vào Fiddle, bạn sẽ thấy bên trong 'Nội dung' rằng hàm được gọi ở mỗi lần nhấp chuột
Tôi có đoạn mã sau trong một thành phần chức năng: const [folder, setFolder] = useState([]); const folderData = useContext(FolderContex
Tôi đang gặp sự cố khi lấy hình ảnh từ S3 bằng URL được chỉ định trước và AFNetworking 3.0. Tôi có thể lấy hình ảnh bằng NSMutableURLRequest và NSURLSession, nhưng khi tôi sử dụng AFHT
Tôi đang gặp sự cố với trình quản lý Oracle UCP khi sử dụng Oracle ojdbc 12 và Java 8. Khi nhóm UCP không khởi động được, tôi muốn đóng các kết nối mà nó tạo ra. Khi ORA-02391: vượt quá
đóng cửa. Câu hỏi này cần có thông tin chi tiết hoặc rõ ràng. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện
Tham chiếu đến plunker này: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview Tôi đã chỉ định trong tệp styles.css và trong tệp src/app.ts
Tại sao thanh của tôi lại mỏng thế? Tôi đã thử đặt chiều rộng thành 1 và chúng trở nên thực sự dày. Tôi không biết phải thử cách nào khác nữa. Độ dày mặc định là 0,8, vậy có nên như vậy không? nhập matplotlib.pyplot dưới dạng plt nhập
Truy vấn thực thi như mong đợi khi tôi viết: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; Nhưng điều tôi thực sự muốn là một phép nối đúng. khi
Tôi có dữ liệu thời gian sau: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
Một số thông tin cơ bản - máy chủ NodeJS của tôi đang chạy trên cổng 3001 và ứng dụng React của tôi đang chạy trên cổng 3000. Tôi đã thiết lập một proxy trong ứng dụng React package.json của mình để proxy cho đối tác
Tôi đang gặp phải một vấn đề ngớ ngẩn. Tôi đang cố gắng tải chậm hình ảnh của mình vào ứng dụng Angular, tôi đã thử cách này 2: Nhưng cả hai đều đặt thuộc tính src thay vì data-src, tôi có bỏ sót điều gì ở đây không? Giữ d
Tôi là một lập trình viên xuất sắc, rất giỏi!