반응형
jstree에서 제공해주는 plugin중에 하나인 contextmenu plugin에 대해 알아보자.
$('#tree').jstree({
'core' : {
'data' : [
{ "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
{ "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
{ "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
{ "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" },
],
"check_callback" : true
},
'plugins' : ["contextmenu"]
});
앞선 글에서 드래그앤 드롭 플러그인에 대해 설명할때 기본적인 설명이 포함되어있으니 같은 설명은 하지 않겠다.
plugins : contextmenu 를 선언해주고
당연히 check_callback : true 를 선언해주면 바로 기본적인 contextMenu를 사용할 수 있다.
jstree 에서 기본적으로 contextmenu를 사용할때 제공하는 기능들이다.
물론 사용자가 contextmenu 내용을 수정하여 사용 가능하다.
아래와 같이 "contextmenu"를 따로 작성해주면 된다.
$('#tree').jstree({
'core' : {
'data' : [
{ "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
{ "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
{ "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
{ "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" },
],
"check_callback" : true
},
'plugins' : ["contextmenu"],
'contextmenu' : {
"items" : {
"test" : { //사실상 "test"라는 이름은 변수에 가깝기 때문에 뭐든 상관없다 생각한다.
"separator_before" : false,
"separator_after" : true,
"label" : "신규메뉴",
"action" : function(obj){alert('메뉴테스트')}
},
"test1" : {
"separator_before" : false,
"separator_after" : true,
"label" : "신규메뉴2",
"action" : function(obj){alert('메뉴테스트2')}
}
}
}
});
"contextmenu" 에서 사용가능한 options는 공식홈에서 안내해주고있다.
출처 : jstree contextmenu options
separator_before
- a boolean indicating if there should be a separator before this itemseparator_after
- a boolean indicating if there should be a separator after this item_disabled
- a boolean indicating if this action should be disabledlabel
- a string - the name of the action (could be a function returning a string)title
- a string - an optional tooltip for the itemaction
- a function to be executed if this item is chosen, the function will receiveicon
- a string, can be a path to an icon or a className, if using an image that is in the current directory use a./
prefix, otherwise it will be detected as a classshortcut
- keyCode which will trigger the action if the menu is open (for example113
for rename, which equals F2)shortcut_label
- shortcut label (like for exampleF2
for rename)submenu
- an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered
추가적으로 만약 customize 해서 사용할 경우
가끔 이유는 알 수 없지만 jstree에서 제공해주는 default같은 contextmenu 항목들이 같이 출력되는 경우가 있을수 있는데
그럴경우 jstree.js 파일을 들어가서 cutomize부분을 제거해주면 될것이다...아마?
반응형
댓글