我可以很好地初始化对象:
ngOnInit() {
this.cy = cytoscapeService.cytoscape( Object.assign( {
container : this.el.nativeElement,
}, DATA_FLOW_CYTOSCAPE_CONFIG ) );
this.cy.panzoom( Object.assign(
{ minZoom : 0, maxZoom : 10 }, // arbitrary numbers
relateConfig.panzoomDefaults,
) );
但是,无论我使用什么数字,或者当图形更改视图时,我似乎都无法更新缩放滑块的最大/最小外观。我的意思是,如果只能缩放视图(例如1-2),则整个滑块应在最小值(1)和最大值(2)之间滑动。
private runLayout() {
this.cy.minZoom( 1e-50 );
const layout = this.cy.layout( DATA_FLOW_LAYOUT_CONFIG );
layout.on( 'layoutstop', () => {
this.cy.minZoom( this.cy.zoom() );
this.cy.panzoom( 'destroy' );
this.cy.panzoom( Object.assign(
{ minZoom : this.cy.zoom() },
relateConfig.panzoomDefaults,
) );
} );
这将调整缩放限制,但也仅限制滑块具有的移动量,它不会重新计算最小和最大 slider 位置。
这有意义吗?有什么想法吗?
例如:
滑块初始移动范围-
[| ---------- [] ---------- |]
视图已更改,范围受到限制-
[-|-[] --- || ------------]
答案 0 :(得分:0)
这里的问题是Object.assign
。
this.cy.panzoom( Object.assign(
{ minZoom : this.cy.zoom() },
relateConfig.panzoomDefaults,
) );
如果将panZoom的默认值保存在某个地方(在我的情况下为relateConfig.panzoomDefaults
),则它们不会被Object.assign
覆盖。删除我希望能够立即更改的值,使我可以根据需要使用Object.assign
进行更改。