blessed-contrib tree module의 함수를 재정의하려고합니다. 그러나 개체 상속의 방법으로 뭔가를 놓치고 생각합니다. 어떤 도움이 될 것이라고 생각합니다. 크게 감사어떻게 자바 스크립트 라이브러리 개체를 재정의 this.function (arg, function() {
원래 코드 :.. 나는 내 자신의 코드에 this.rows.key(options.keys, function() {
함수를 재정의하기 위해 노력하고있어
function Tree(options) {
//...
this.rows = blessed.list({
top: 1,
width: 0,
left: 1,
style: options.style,
padding: options.padding,
keys: true,
tags: options.tags,
input: options.input,
vi: options.vi,
ignoreKeys: options.ignoreKeys,
scrollable: options.scrollable,
mouse: options.mouse,
selectedBg: 'blue',
});
this.append(this.rows);
this.rows.key(options.keys, function() {
var selectedNode = self.nodeLines[this.getItemIndex(this.selected)];
if (selectedNode.children) {
selectedNode.extended = !selectedNode.extended;
self.setData(self.data);
self.screen.render();
}
self.emit('select', selectedNode, this.getItemIndex(this.selected));
});
//...
나는 다음과 같은 일을 할 노력하고있어하지만 난 잘 모르겠어요 어떻게 객체 path는 궁극적으로 축복받은 contrib.tree.list 유형의 경우 작동합니다.
내 코드는 다음과 같은 :
"use strict";
var blessed = require('blessed'),
contrib = require('blessed-contrib');
//...
//create layout and widgets
var grid = new contrib.grid({rows: 1, cols: 2, screen: screen})
var tree = grid.set(0, 0, 1, 1, contrib.tree,
{
style: {
text: "red", fg: 'blue',
selected: {
bg: 'yellow', fg: 'white'
}
},
// keys: ['+', 'space'],
vi: true,
template: { lines: true },
label: 'Filesystem Tree'
})
// monkeypatch contrib.tree.rows.key(options.keys, function() {}
// save the original
var old_tree_rows_key = tree.rows.key;
//tree.rows.key = function(options_keys) {
tree.rows.key = function(options_keys) {
var selectedNode = self.nodeLines[this.getItemIndex(this.selected)];
// handle items in options.keys array on my own for custom purposes
// ...
// Code I want commented out:
// if (selectedNode.children) {
// selectedNode.extended = !selectedNode.extended;
// self.setData(self.data);
// self.screen.render();
// }
self.emit('select', selectedNode, this.getItemIndex(this.selected));
};
//...
당신이'덮어 tree.rows.key', 오히려'Tree' 생성자를 덮어'이를 호출하는 것을 방지하지 않으려는 것 같아 .rows.key'를 특정 콜백 함수와 함께 사용합니다. – Bergi
답장을 보내 주셔서 감사합니다. 나는 네가 옳다고 생각한다. 나는 지금 당신이 묘사 한 방식으로 갈 방법을 연구 중입니다. 나는 훨씬 더 가까워졌습니다. –