Ext 가 디자인 한 인터페이스 에 대해 서 문제 해결 방법 이 자주 흐 트 러 집 니 다.

2229 단어 EXTJava
더 읽 기
최근 에 Ext 로 인터페이스 디자인 을 할 때 정상 적 인 페이지 가 몇 번 사용 한 후에 구조 가 엉망 인 문제 가 자주 발생 하 는 것 을 발견 했다.
코드 를 찾 아 보 니 Ext 의 stateful 이 이상 한 짓 을 한 것 같 습 니 다.
Component.js 에서 다음 과 같은 말 이 있 습 니 다.

if(this.stateful !== false){
        this.initState(config);
    }

Ext.state.Manager.setProvider 를 호출 하여 상태 유지 기능 을 사용 하면 많은 component 들 이 상 태 를 유지 합 니 다.

saveState : function(){
        if(Ext.state.Manager){
            var state = this.getState();
            if(this.fireEvent('beforestatesave', this, state) !== false){
                Ext.state.Manager.set(this.stateId || this.id, state);
                this.fireEvent('statesave', this, state);
            }
}

유 지 된 상 태 를 볼 수 있 습 니 다.기본 값 은 this.stateId|this.id 로 key 를 만 듭 니 다.그러나 대부분의 component 는 id 를 지정 하지 않 습 니 다.이 럴 때 ext 는 기본 값 으로 id 를 만 듭 니 다.

    getId : function(){
        return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID));
    }

이 id 는 ext-comp-1000 에서 시 작 된 문자열 임 을 알 수 있 습 니 다.
하나의 인터페이스 가 새로 고침 된 후에 두 개의 서로 다른 component 가 같은 id 를 가지 고 있 을 가능성 이 높 습 니 다.이 럴 때 stateful 은 대상 을 잘못 알 수 있 습 니 다.예 를 들 어 예 를 들 어
Ext.Window 에서 유지 되 는 상 태 는:

    getState : function(){
        return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox());
    },
    getBox : function(local){
        var s = this.el.getSize();
        if(local === true){
            s.x = this.el.getLeft(true);
            s.y = this.el.getTop(true);
        }else{
            var xy = this.xy || this.el.getXY();
            s.x = xy[0];
            s.y = xy[1];
        }
        return s;
    },

Ext.Window 가 저 장 된 좌표 와 크기 를 볼 수 있 습 니 다.이 정보 가 다른 component 에 불 러 오 면 흐 트 러 지지 않 는 것 이 이상 합 니 다.
이 문 제 를 해결 하 는 방법 은 stateful 을 묵인 하 는 것 이다.
1.Ext.state.Manager.setProvider 를 호출 하지 않 으 면 유 지 를 사용 하지 않 습 니 다.
2.
4.567913.
4.567913.기본적으로 상 태 를 유지 하지 않 습 니 다.저 는 이렇게 했 습 니 다.

좋은 웹페이지 즐겨찾기