###前提・実現したいこと
extjs6において、Ext.grid.PanelクラスのensureVisibleメソッドが失敗することがあります。
これを事前に発火できる・できないを取得することを目標とします。
version: ext6.0.1
###発生している問題・エラーメッセージ
失敗する場合には以下のエラーメッセージが出力されます。
Ext.grid.plugin.BufferedRenderer.scrollTo(): Unknown record passed to BufferedRenderer#scrollTo
###該当のソースコード
view側は省略。
controller側のみ記載致します。
エラーの出る最小のコードとなることは確認済みです。
JS
1routes: { 2 '/view/:id': 'onShow' 3}, 4onShow: function ( id ) { 5 var store = this.getViewModel( ).get( 'store' ); 6 var record = store.findRecord( 'id', id, 0, false, true, true ); 7 if ( ! record ) { 8 this.redirectTo( '/error' ) 9 return; 10 } 11 this.getView( ).show( ); 12 var view = this.lookupReference( 'gridView' ); 13 view.ensureVisible( record, { 14 animate: true, 15 highlight: false, 16 select: true, 17 focus: false 18 } ); 19}
###試したこと
renderが間に合ってないのかもしれませんが、
setTimeoutなどで遅らせるやり方はスマードではないので却下です。
できればgridviewの状態を取得してダメならエラーを返すなどしたいと考えています。
現状は、エラーが出てもensureVisibleのメソッド部分のみ動かないだけなので、無視しています。
stackoverflowなども探しましたが、ニッチなのか皆許容しているのか、
今回のようなviewの生成が遅れたせい(おそらく)で一定のメソッドが発火できない、というような質問はありませんでした。
あなたの回答
tips
プレビュー