angular2 学习笔记 ( 第3方插件 jQuery and ckeditor )
refer :
https://forums.meteor.com/t/importing-ckeditor-using-npm/28919/2 (ckeditor)
https://github.com/angular/angular-cli/issues/3094 (jQuery)
Ckeditor
1. npm install ckeditor --save
2. npm install @types/ckeditor --save --dev
1. 用 npm 的话只能安装 standard 版本

所以不推荐大家使用 npm 安装
2. npm install @types/ckeditor --save (typescipt version 可以用 npm 下载)
3.去这里选好你要的配置, 然后下载整个 ckeditor 文档 http://ckeditor.com/builder
4. index.html 写上
<script>
CKEDITOR_BASEPATH = '/app/ckeditor/';
</script>
5. 创建一个 /app/ckeditor 文档, 把刚才下载的文档放进去
6. import "./ckeditor/ckeditor"; (对应的路径去 import)
7. 写一个 accessor component
import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, forwardRef, OnDestroy, ApplicationRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms";
import "../ckeditor/ckeditor";
type PublishMethod = (value: string) => void
@Component({
selector: 'ck',
templateUrl: './ck.component.html',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CkComponent),
multi: true
}],
})
export class CkComponent implements OnInit, OnDestroy, AfterViewInit, ControlValueAccessor {
constructor(
private appRef : ApplicationRef
) { }
ngOnInit() { }
private editor: CKEDITOR.editor
private model: string
@ViewChild("ck", { read: ElementRef }) ck: ElementRef
ngAfterViewInit() {
setTimeout(() => {
this.editor = CKEDITOR.replace(this.ck.nativeElement);
if (this.model) {
this.editor.setData(this.model);
}
this.editor.on("change", (event) => {
let data = event.editor.getData();
this.publish(data);
this.appRef.tick();
});
});
}
ngOnDestroy() {
this.editor.destroy();
}
writeValue(value: string): void {
if (this.editor) {
this.editor.setData(value);
}
else {
this.model = value;
}
}
private publish: PublishMethod
registerOnChange(fn: PublishMethod): void {
this.publish = fn;
}
private touch: any
registerOnTouched(fn: any): void {
this.touch = fn;
}
}
<textarea #ck (focus)="touch()" >
</textarea>
p.s 这里可以方便设置 config : http://nightly.ckeditor.com/17-03-07-07-09/full/samples/toolbarconfigurator/index.html#basic
jQuery
1. npm install jquery --save
2. npm install @types/jquery --save -dev
ngAfterViewInit() {
setTimeout(() => {
$("div").show();
});
}
如果要用插件的话也是一样
4. npm install datatables.net --save
5. npm install @types/jquery.datatables --save-dev
import * as $ from 'jquery';
import 'datatables.net'; ngAfterViewInit() {
$('#example').DataTable();
}
angular2 学习笔记 ( 第3方插件 jQuery and ckeditor )的更多相关文章
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制 1.代码更简单 示例2-1 使用javascript实现隔行变色 < ...
- Dynamic CRM 2013学习笔记(二)插件基本用法及调试
插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") &a ...
- Qt Creator 源码学习笔记04,多插件实现原理分析
阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...
- 表单提交学习笔记(一)—利用jquery.form提交表单(后台.net MVC)
起因:一开始想用MVC本身的Form提交方法,但是提交完之后想进行一些提示,MVC就稍显不足了,最后用jquery插件---jquery.form.js,完美解决了问题~~ 使用方法 一.下载jque ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- bootstrap学习笔记之四(javascript插件)
下面展现四个插件的用法,一般插件的功能可以用两种方法实现,一种是引入bootstrap.js后,通过添加data属性实现,另一种则是通过js代码是实现. 第一个插件:下拉菜单的实现 第一种方法:dat ...
- angular2 学习笔记 ( rxjs 流 )
RxJS 博大精深,看了好几篇文章都没有明白. 范围牵扯到了函数响应式开发去了... 我对函数式一知半解, 响应式更是第一次听到... 唉...不过日子还是得过...混着过先呗 我目前所理解的很浅, ...
- Angular2学习笔记2
每个angular2应用程序默认使用app目录来创建(可以自己制定,但是eclipse插件生成的会自动使用app) 每个程序应当至少有一个angular模块即根模块.根模块使用@NgModule({} ...
随机推荐
- 学习 CosmosDB (NoSql)
Microsoft Azure官网 学习cosmos DB,也称作 documentDB,NoSql,不是关系型数据库,数据以Json的格式存储,灵活性强. 1.DLL 2.Connector set ...
- Online Judge(OJ)搭建——5、配置
Spring 配置一些本地类,还有 HTML form 提交文件的解析器. package per.piers.onlineJudge.config; import org.springframewo ...
- 3.21电脑重装“operation not found system ”和xp分盘”分配表有标记为已使用的未用簇”
问题一.是用光盘重装系统后重启,提示operation not found system ①考虑是系统问题,没装好,还是引导文件丢失;换新盘装,若还是一样; ②分析认为是分区问题,必须是活动分区+主分 ...
- python趣味 ——奇葩的全局形参
在c++,c#,js等语言中: 函数定义(参数) 函数体:参数修改 这里的参数修改都是仅限于这个函数体内的 python不知道是不是bug,我们这样写: def test(a=[]): a.appen ...
- pycharm创建Flask项目,jinja自动补全,flask智能提示
pycharm创建Flask项目,jinja自动补全,flask智能提示 之前一直都是用在idea里创建空项目然后导入,之后就没有各种的智能提示,在选择文类,选择模板之类的地方就会很麻烦. 步骤1:用 ...
- mac下利用Breakpad的dump文件进行调试
一.前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况.这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处理,在Windows和mac两个平台同时 ...
- UWP:可滚动的PivotHeader
UWP开发里,Pivot真是个令人又爱又恨的控件.为了实现某些可滚动Header的效果,有些大佬甚至去掉了原本的Header,使用一个ListView或者ListBox自己画Header,不过这样会让 ...
- 001-List,数组,Set,Map属性的映射
hibernate.cfg.xml: <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configur ...
- 【Python】 闭包&装饰器
python中的函数本身就是对象,所以可以作为参数拿来传递.同时其允许函数的层级嵌套定义,使得灵活性大大增加. 闭包 闭包的定义:将函数的语句块与其运行所需要的环境打包到一起,得到的就是闭包对象.比如 ...
- 设计模式 --> (17)状态模式
状态模式 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.它有两种使用情况: (1)一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为. (2)一个操作中 ...