我使用以下代码初始化我的一个角度2组件中的jstree
declare var $: JQueryStatic;
createTree(): void {
$("#tree").jstree({
"core": {
"stripes": true
},
"plugins": ["types", "dnd"],
'types': {
"queue": {
"icon": "fa fa-list-ol"
},
"email": {
"icon": "fa fa-envelope-o"
},
"folder": {
"icon": "fa fa-folder-open-o"
}
}
});
}
我必须将jstree
函数添加到index.d.ts
文件中的JQuery接口,以便TypeScript识别
interface JQuery {
jstree(options?: any): JsTree;
}
此功能按预期工作,我的树视图已成功生成。我现在想要采取下一步并将jstree On
函数绑定到我的JsTree
对象。我添加了JsTree接口
interface JsTree {
on(event: string, callback: Function): void;
}
并更改createTree
方法以包含On
函数
createTree(): void {
$("#tree").jstree({
"core": {
"stripes": true
},
"plugins": ["types", "dnd"],
'types': {
"queue": {
"icon": "fa fa-list-ol"
},
"email": {
"icon": "fa fa-envelope-o"
},
"folder": {
"icon": "fa fa-folder-open-o"
}
}
}).on('changed.jstree', function (e, data) {
console.log(data.selected[0]);
});
}
然而,这给了我一个
TypeError:对象不支持属性或方法'
异常。我是否声明了正确的接口,或者我错过了其他什么?
答案 0 :(得分:1)
让这个工作最简单的方法是将JsTree初始化包装在一个单独的javascript文件中的自己的函数中,并在Angular 2组件中公开该函数,下面我列出了步骤
步骤1 - 在单独的javascript文件中将JsTree初始化提取到它自己的函数中
Clients.Caller.NotifyAlreadyRunning(id);
第2步 - 请记住将javascript文件包含在HTML页面中或包含在页面中的缩小包中
步骤3 - 在Angular 2组件类的顶部声明javascript函数,并将其类型设置为#ifndef __IPHONE_8_0
#warning "This project uses features only available in iOS SDK 8.0 and later."
#endif
function InitJsTree(){
$("#tree").jstree({
"core": {
"stripes": true
},
"plugins": ["types", "dnd"],
'types': {
"queue": {
"icon": "fa fa-list-ol"
},
"email": {
"icon": "fa fa-envelope-o"
},
"folder": {
"icon": "fa fa-folder-open-o"
}
}
})
}
步骤4 - 在Angular 2组件中使用新公开的javascript方法
any
答案 1 :(得分:0)
我在开发ionic2 app时使用了以下步骤,但是,我认为,它也可以在其他情况下工作,因为ionic2使用angular2
1)在index.html中包含jquery lib以及jstree libs和css例如。
<script src="lib/jquery-3.2.1.min.js"></script>
<script src="lib/jstree.min.js"></script>
<link href="css/jstree/themes/default/style.css" rel="stylesheet">
2)在你的组件html文件中声明它,例如。
<div id="jstree_test"></div>
3)在你的component.ts中,jquery应该包括在内:
declare var $:any;
and it is available and you can create jstree now e.g.
$('#jstree_test').jstree({
'plugins': ["ui","checkbox", "types","themes", "changed", "open_node", "sort","crrm","json_data"],
'types': {
'default': {
'icon': 'jstree-folder'
}
},
'core' : {
'animation' : 0,
'check_callback':true,
'data' : {
'url' : (node) => {
return URL;
},
'type' : 'POST',
'data' : (node) => {
return (params to be passed for URL);
},
'contentType': 'application/json; charset=utf-8', /* if json fomrat needs to be used */
'dataFilter': (data) => {
return HANDLE RESPONSE AND RETUREN JSON ARRAY TO FORM TREE;
},
'error': (e)=>{
}
}
}
});
在这里,我正在基于AJAX请求创建JSTREE。