【14.2.2】【有什么方式可以监听 Sheet 的 options.isProtected 变化吗】
尝试了 SheetChanged,没效果。你们对于 isProtected 的设置是会实时更新锁定效果的,所以应该是能感知到变化的,是不是有内部事件没开放出来,还是我用错事件了?
你好,我这边跟我们研发同事确认了一下,目前是没有对应的事件可以监听表单保护的变化的。 Derrick.Jiao 发表于 2021-11-12 14:22
你好,我这边跟我们研发同事确认了一下,目前是没有对应的事件可以监听表单保护的变化的。
这个事件可以加一下吗,你们内部应该是能实现的,应该也已经实现了。如果加的话可以一步到位不,直接 SheetOptionChanged 之类的
nutstore 发表于 2021-11-12 14:49
这个事件可以加一下吗,你们内部应该是能实现的,应该也已经实现了。如果加的话可以一步到位不,直接 She ...
请详细描述一下具体的应用场景,这边会将此作为需求提交调研。 Derrick.Jiao 发表于 2021-11-12 15:09
请详细描述一下具体的应用场景,这边会将此作为需求提交调研。
大概是这么个场景:
function useCellEditable(cell: CellRange): boolean {
const = useState<boolean>(
() => cell.sheet.options.isProtected,
)
const = useState<boolean>(() => cell.locked())
useEffect(() => {
const workbook = cell.sheet.getParent()
if (!workbook) return
const onCellChanged = (
e: any,
args: Spread.Sheets.ICellChangedEventArgs,
): void => {
if (args.propertyName !== '') return
const currentLocked = cell.locked()
if (locked !== currentLocked) {
setLocked(currentLocked)
}
}
const onProtectChanged: EventListeners = ({
sheetName,
isProtected,
}) => {
if (cell.sheet.name() === sheetName) setIsProtected(isProtected)
}
cell.sheet.bind('CellChanged', onCellChanged)
cell.sheet.bind('ProtectChanged', onProtectChanged)
return () => {
cell.sheet.unbind('CellChanged', onCellChanged)
cell.sheet.unbind('ProtectChanged', onProtectChanged)
}
}, )
return !(isProtected && locked)
}
nutstore 发表于 2021-11-12 16:24
大概是这么个场景:
为了更加准确理解你的完整需求,请再加以文字描述为什么需要加上监听表单保护的事件。 Derrick.Jiao 发表于 2021-11-12 17:19
为了更加准确理解你的完整需求,请再加以文字描述为什么需要加上监听表单保护的事件。
因为 useCellEditable 中 editable 的计算要依赖 isProtected,而这个数据的变化目前无法直接侦听到 nutstore 发表于 2021-11-12 17:24
因为 useCellEditable 中 editable 的计算要依赖 isProtected,而这个数据的变化目前无法直接侦听到
收到,这边已将此问题作为需求记录下来,待研发进一步调研是否在后续版本添加。
如果确认添加,会在本贴及时通知您。
(已将此问题移至 产品需求版块)
页:
[1]