2014-05-22 21 views
3

我想使用祝福,爲節點的文本UI庫。我想動態創建窗口(使用後釋放它們),但我無法在文檔中找到關於如何銷燬它們的信息。動態窗口(框)和在祝福(nodejs文本UI庫)中的元素

我試圖從它的父母(屏幕)中刪除創建的Box對象並刪除對它的任何引用,所以Node的GC可以完成剩下的工作,但它似乎不工作,可能是引用泄漏某處。

我能找到的例子並沒有這樣做,它們都創建了一堆窗口,隱藏它們並在需要時再顯示它們。

有沒有人有任何線索如何做到這一點,或者這不被支持?

回答

5

您可以使用remove method來做到這一點。 例如,如果使用:screen.append(form);將表單(以屏幕作爲父級)附加到屏幕上,則可以使用screen.remove(form);銷燬該表單,它可以很好地工作。

實施例:

var form = blessed.form({ 
     parent: screen, 
     width: '50%', 
     height: 7, 
     border: { 
     type: 'line' 
     }, 
     keys: true, 
     tags: true, 
     top: 'center', 
     left: 'center' 
    }); 

var cancel = blessed.button({ 
    parent: form, 
    mouse: true, 
    keys: true, 
    shrink: true, 
    padding: { 
    left: 1, 
    right: 1 
    }, 
    left: 48, 
    width: 9, 
    top: 3, 
    name: 'cancel', 
    content: 'cancel', 
    style: { 
    focus: { 
     bg: 'blue', 
     fg: 'white' 
    }, 
    hover: { 
     bg: 'blue', 
     fg: 'white' 
    } 
    }, 
    border: { 
    type: 'line' 
    } 
}); 

var submit = blessed.button({ 
    parent: form, 
    mouse: true, 
    keys: true, 
    shrink: true, 
    padding: { 
    left: 1, 
    right: 1 
    }, 
    left: 35, 
    width: 9, 
    top: 3, 
    name: 'submit', 
    content: 'submit', 
    style: { 
    focus: { 
     bg: 'blue', 
     fg: 'white' 
    }, 
    hover: { 
     bg: 'blue', 
     fg: 'white' 
    } 
    }, 
    border: { 
    type: 'line' 
    } 
}); 

screen.append(form); 
submit.focus(); 
screen.render(); 

cancel.on('press', function() { 
    screen.remove(form); 
    screen.render(); 
}); 
相關問題