【发布时间】:2017-11-17 01:19:21
【问题描述】:
我正在尝试在这里学习本教程:https://www.algolia.com/doc/tutorials/search-ui/instant-search/build-an-instant-search-results-page/instantsearchjs/
为了在我的网站中实现 Instantsearchjs。
一切都已链接好的,我可以从我的网站查询并得到 .JSON 的结果。
但我不明白如何渲染它,我不能把函数放在 ngOnInit() 之外
这是我的文件:
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import * as firebase from 'firebase';
import * as algoliasearch from 'algoliasearch';
import * as instantsearch from 'instantsearch.js';
@Component({
selector: 'app-homepage',
templateUrl: './homepage.component.html',
styleUrls: ['./homepage.component.css'],
})
export class HomepageComponent implements OnInit {
constructor(private router: Router) {
}
var search = instantsearch({
// Replace with your own values
appId: '4DJA9OYKC1',
apiKey: '12de76865a02a406ee95786c6f4a3cf3', // search only API key, no ADMIN key
indexName: 'events',
urlSync: true
});
search.addWidget(
instantsearch.widgets.searchBox({
container: '#search-input'
})
);
search.addWidget(
instantsearch.widgets.hits({
container: '#hits',
hitsPerPage: 10,
templates: {
item: document.getElementById('hit-template').innerHTML,
empty: "We didn't find any results for the search <em>\"{{query}}\"</em>"
}
})
);
search.addWidget(
instantsearch.widgets.pagination({
container: '#pagination'
})
);
ngOnInit() {
var client = algoliasearch('4DJA9OYKC1', '12de76865a02a406ee95786c6f4a3cf3');
var index = client.initIndex('events');
index.search('Ada', function(err, content) {
console.log(content.hits);
//console.log(err);
});
我认为这是 TS 内部的功能问题,但我不知道如何在 Angular 中实现它。
在 Oninit 内部它可以编译,但页面上到处都是错误,而在它外部则无法编译。
示例中 init 中的 ng 代码完美运行,并在网站控制台上显示结果。
提前感谢社区的帮助
【问题讨论】:
-
有人吗?一旦我添加了一个小部件,网站就会停止工作。
-
我不熟悉 Angular 4,但 InstantSearch.js 正在使用 DOM 做自己的事情。有没有可能这两个库都试图修改 DOM 的同一部分,这使 Angular 感到困惑。有很大帮助的一件事是在 jsfiddle.net 上制作一个可重现的测试用例