This answer显示了如何隐藏可见元素。我想创建一些操作来切换一些元素的可见性。根据{{3}},我需要使用element.removeAttr
删除一些属性。我可以看到已删除的./display', 'none'
属性,但在UI元素仍然隐藏 - 它们应该是可见的。
你知道我错过了什么吗?我应该以某种方式重新呈现UI吗?
以下是我的活动。
paper.on('cell:pointerdown', function switchTaskVisibility(...args) {
const selectedItem = args[0];
const successors = graph.getSuccessors(selectedItem.model);
const tasks = successors.filter(function isElementOfTypeTask(element) {
const type = element.prop('type');
if (type === 'task') return element;
});
console.log(tasks);
const hasVisibleTasks = selectedItem.model.prop('hasVisibleTasks');
if (hasVisibleTasks) {
tasks.forEach((element) => {
element.attr('./display', 'none');
});
}
else {
tasks.forEach((element) => {
element.removeAttr('./display');
});
}
// HERE I CAN SEE THAT DISPLAY ATTRIBUTE SWITCHES CORRECTLY
// BUT AFTER FIRST HIDING OF ELEMENTS I CANNOT MAKE THEM VISIBLE IN UI
console.log(graph.getSuccessors(selectedItem.model));
selectedItem.model.prop('hasVisibleTasks', !hasVisibleTasks);
});
谢谢,
拉法尔
答案 0 :(得分:1)
我找到了一些解决方法。由于某些原因 const hasVisibleTasks = selectedElement.prop('hasVisibleTasks');
if (hasVisibleTasks) {
cells.forEach((element) => {
element.attr('./visibility', 'hidden');
});
}
else {
cells.forEach((element) => {
element.attr('./visibility', 'visible');
});
没有正确地重新渲染元素,所以我测试了element.removeAttr('./display')
属性,如下所示:
child_process.execFile()
工作正常。但我仍然不明白为什么child_process.execFile()
之前没有重新呈现UI。
致以最诚挚的问候,
拉法尔
答案 1 :(得分:0)
无论解决方案如何,为什么你使用const数据类型用于hasVisibleTasks,因为此变量的值似乎在运行时发生变化。