如何在 Angular 模板中嵌入 GitHub 要点?
How to embed a GitHub gist in the Angular template?
Angular 忽略其模板中的 script
标签,但它们是加载 GitHub 要点所必需的。这样做的最佳做法是什么?使用 iframe
?动态创建 script
标签?还是别的?
使用 angular-gist or ngx-gist 嵌入 GitHub 要点。
angular-要点:
安装:
npm install angular-gist --save
作为模块使用:
angular.module('myApp', ['gist']);
指令用法:
<gist id="1234556"></gist>
ngx-要点:
安装:
npm i --save ngx-gist
用法:
import { NgxGistModule } from 'ngx-gist/dist/ngx-gist.module';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
NgxGistModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
您自己的实施:
一种方法是创建一个 iframe
,其中包含 script
,并在您希望要点出现时附加它(基于 jasonhodges 解决方案)。
模板
<iframe #iframe type="text/javascript"></iframe>
组件
@ViewChild('iframe') iframe: ElementRef;
gistUrl: string;
ngAfterViewInit() {
const doc = this.iframe.nativeElement.contentDocument || this.iframe.nativeElement.contentElement.contentWindow;
const content = `
<html>
<head>
<base target="_parent">
</head>
<body>
<script type="text/javascript" src="${this.gistUrl}"></script>
</body>
</html>
`;
doc.open();
doc.write(content);
doc.close();
}
我曾多次使用 angular-gist-embed 现在使用 Bower 来实现此目的。
像这样安装即可:bower install angular-gist-embed
然后加上:angular.module('myModule',['gist-embed'])
我使用特定的 GitHub Gist 的 id 来嵌入它:
<code data-gist-id="5457595"></code>
您可以找到更多示例 here。
Angular 忽略其模板中的 script
标签,但它们是加载 GitHub 要点所必需的。这样做的最佳做法是什么?使用 iframe
?动态创建 script
标签?还是别的?
使用 angular-gist or ngx-gist 嵌入 GitHub 要点。
angular-要点:
安装:
npm install angular-gist --save
作为模块使用:
angular.module('myApp', ['gist']);
指令用法:
<gist id="1234556"></gist>
ngx-要点:
安装:
npm i --save ngx-gist
用法:
import { NgxGistModule } from 'ngx-gist/dist/ngx-gist.module';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
NgxGistModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
您自己的实施:
一种方法是创建一个 iframe
,其中包含 script
,并在您希望要点出现时附加它(基于 jasonhodges 解决方案)。
模板
<iframe #iframe type="text/javascript"></iframe>
组件
@ViewChild('iframe') iframe: ElementRef;
gistUrl: string;
ngAfterViewInit() {
const doc = this.iframe.nativeElement.contentDocument || this.iframe.nativeElement.contentElement.contentWindow;
const content = `
<html>
<head>
<base target="_parent">
</head>
<body>
<script type="text/javascript" src="${this.gistUrl}"></script>
</body>
</html>
`;
doc.open();
doc.write(content);
doc.close();
}
我曾多次使用 angular-gist-embed 现在使用 Bower 来实现此目的。
像这样安装即可:
bower install angular-gist-embed
然后加上:
angular.module('myModule',['gist-embed'])
我使用特定的 GitHub Gist 的 id 来嵌入它:
<code data-gist-id="5457595"></code>
您可以找到更多示例 here。