typescript 和 vue 中的 Summernote
Summernote in typescript and vue
我想在用 Typescript 编写的 Vue 组件中使用 summernote。但是我得到错误:
Error TS2339 (TS) Property 'summernote' does not exist on type 'JQuery'.
我的代码如下所示:
import Vue from "vue";
import * as $ from "jquery";
require('summernote');
然后在模板中我有 div:
<div ref="mysummernote" id="summernote"><p>Hello Summernote</p></div>
在 mounted() 中我有:
$('#summernote').summernote();
并且此 .summernote() 方法被标记为错误,并带有顶部的消息。所有代码都是用打字稿写的。对于 npm,我在这个网站上添加了 summernote 包:https://www.npmjs.com/package/summernote
我在尝试将 summernote 编辑器添加到 Angular2 站点时遇到了类似的问题。
我所做的是将 summernote 属性 添加到 jQuery 打字文件中。
我的项目已有 jQuery 的类型文件 - 在本例中为 jquery.d.ts(位于类型文件夹中)。
我在该文件中找到了 "interface JQuery {" 部分并向其中添加了以下行:
summernote: any;
所以我就是这样嫁给 Vue + TypeScrypt + Summernote:
模板:
<html-editor height="200" :model.sync="yourFieldName"></html-editor>
我的package.json
:
{
"devDependencies": {
"typescript": "^3.4.5"
},
"dependencies": {
"@types/bootstrap": "^4.3.1",
"@types/jquery": "^3.3.29",
"@types/select2": "^4.0.48",
"@types/summernote": "^0.8.0"
}
}
这是我的组件:
/// <reference path="../node_modules/@types/summernote/index.d.ts" />
Vue.component("html-editor", {
props : {
model: {
required: true
},
height: {
type: String,
default: "150"
}
},
template: "#html-editor",
mounted() {
let config : Summernote.Options = {
height: this.height,
followingToolbar: false, // that needs some tweak see below
toolbar: [
['style', ['bold', 'italic']]
],
callbacks: {},
};
let vm = this;
config.callbacks = {
onInit: function () {
$(vm.$el).summernote("code", vm.model);
},
onChange: function () {
vm.$emit("update:model", $(vm.$el).summernote("code"));
},
};
$(this.$el).summernote(config);
}
})
我不得不修改 @types/summernote/index.d.ts
:
namespace Summernote {
interface Options {
...
followingToolbar?: boolean;
}
}
(拉取请求进行中)
我想在用 Typescript 编写的 Vue 组件中使用 summernote。但是我得到错误:
Error TS2339 (TS) Property 'summernote' does not exist on type 'JQuery'.
我的代码如下所示:
import Vue from "vue";
import * as $ from "jquery";
require('summernote');
然后在模板中我有 div:
<div ref="mysummernote" id="summernote"><p>Hello Summernote</p></div>
在 mounted() 中我有:
$('#summernote').summernote();
并且此 .summernote() 方法被标记为错误,并带有顶部的消息。所有代码都是用打字稿写的。对于 npm,我在这个网站上添加了 summernote 包:https://www.npmjs.com/package/summernote
我在尝试将 summernote 编辑器添加到 Angular2 站点时遇到了类似的问题。
我所做的是将 summernote 属性 添加到 jQuery 打字文件中。
我的项目已有 jQuery 的类型文件 - 在本例中为 jquery.d.ts(位于类型文件夹中)。
我在该文件中找到了 "interface JQuery {" 部分并向其中添加了以下行:
summernote: any;
所以我就是这样嫁给 Vue + TypeScrypt + Summernote:
模板:
<html-editor height="200" :model.sync="yourFieldName"></html-editor>
我的package.json
:
{
"devDependencies": {
"typescript": "^3.4.5"
},
"dependencies": {
"@types/bootstrap": "^4.3.1",
"@types/jquery": "^3.3.29",
"@types/select2": "^4.0.48",
"@types/summernote": "^0.8.0"
}
}
这是我的组件:
/// <reference path="../node_modules/@types/summernote/index.d.ts" />
Vue.component("html-editor", {
props : {
model: {
required: true
},
height: {
type: String,
default: "150"
}
},
template: "#html-editor",
mounted() {
let config : Summernote.Options = {
height: this.height,
followingToolbar: false, // that needs some tweak see below
toolbar: [
['style', ['bold', 'italic']]
],
callbacks: {},
};
let vm = this;
config.callbacks = {
onInit: function () {
$(vm.$el).summernote("code", vm.model);
},
onChange: function () {
vm.$emit("update:model", $(vm.$el).summernote("code"));
},
};
$(this.$el).summernote(config);
}
})
我不得不修改 @types/summernote/index.d.ts
:
namespace Summernote {
interface Options {
...
followingToolbar?: boolean;
}
}
(拉取请求进行中)