ext 데이터 소스 ->store
데이터 소스 생성:
데이터 원본을 만드는 데는 두 가지 방법만 알고 있습니다.
첫 번째:
var dsPro = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
method: 'post',
url:""
}),
reader: new Ext.data.JsonReader({
root: 'rows',
totalProperty: 'total',
fields: ['id','text']
})
});
두 번째:
var gameds = Ext.extend(Ext.data.Store,{
proxy: new Ext.data.HttpProxy({
method: 'post',
url:" "
}),
reader: new Ext.data.JsonReader({
root: 'rows',
totalProperty: 'total',
fields: ['gameId','gameName']
})
});
var form_gameds = new gameds();
차이: 첫 번째 직접
new
데이터 원본에 필요한 변수를 부여하여 사용할 때 직접 사용할 수 있습니다.
두 번째는 직접 사용할 수 없습니다. 사용할 때 변수를 다시 설정하고 new를 사용하십시오.
개인적으로는 첫 번째 데이터의 간섭성이 비교적 강하다고 느낀다. 어떤 구체적인 원인인지 알 수 없다. 예를 들어 많은 combo(하단 상자)가 같은 이름의 데이터 원본(때로는 js 폴더에 있지 않지만)을 사용할 때 데이터가 방해가 된다. 다른 combo에서 해당하는 값을 선택하고 다른 combo에서 선택하지 않아도 기본적으로 선택한 같은 값을 선택하면 숨겨진 값이 부여된다.아직도 왜 그런지 모르겠어.그리고 밑에 있는 데이터 연결에도 문제가 있습니다. 즉, 때로는 표시된 값을 선택했지만 숨겨진 값은 없습니다!!아버지를 몹시 괴롭히다.다른 데이터 원본에서 이 숨겨진 값을 매개 변수로 사용하여 불러올 때 매개 변수 값이 없다. 매개 변수 값이 비어 있기 때문에 결과적으로 이 데이터 원본은 거리낌없이 불러오고 때로는 데이터베이스에 있는 모든 데이터를 꼬치꼬치 파낸다.연동 효과는 내가 두 번째 데이터 원본을 설계하는 방법에 이르기까지 엉망진창이었다.원인은 역시 데이터 방해의 문제로 귀결된다.
데이터 원본에는 두 가지 중요한 속성이 있습니다. 반드시 없어서는 안 될 것입니다.proxy와reader,proxy는 new Ext.data를 사용합니다.HttpProxy({})로 생성, Ext.data.HttpProxy ({}) 이것은 잘 모르겠습니다.proxy는 그 중의 URL에 따라 원시 데이터를 가져와서reader를 통해 원시 데이터를record 실례로 변환한 후store에 넣으면 이store가 생성됩니다.
Store.load () 방법으로 상술한 변환 과정을 실현합니다. 만약load () 이 방법의 실행이 없다면 위의 데이터 원본은 불러오지 않습니다. 데이터 원본을 만들 때 다른 속성인 autoload:true를 추가하지 않으면 데이터 원본을 만들 때 자동으로 불러옵니다. 데이터 원본을 사용할 수 있을 때 데이터 원본에 데이터가 있습니다. autoload 속성을 추가하지 않으면 기본값은false입니다.그러면 나중에 데이터 원본을 사용할 때 자체적으로 불러올 수밖에 없습니다. 그렇지 않으면 데이터 원본에 데이터가 없습니다.
Proxy의 URL에 대응하는 방법, 되돌아오는 데이터는 아래reader의 읽기 데이터 형식에 대응해야 합니다. 여기가 바로 JSON형입니다. JSON은 조금만 사용할 수 있습니다. 구체적으로 잘 모르겠습니다.
때때로 우리는fields에 있는 데이터를 사용합니다. 매개 변수의 변화로 인해 변화가 있을 수 있습니다. 제가 코드를 처음 썼을 때 가장 먼저 생각한 것은 데이터 원본이load를 할 때reader를 다시 설계하는 것입니다. 즉,reader가 다시 읽을 수 있는 원시 데이터를reader에 있는fields 속성을 변수로 대체하고 이 변수를 바꾸어reader를 바꾸는 것입니다.사실 나는 지금까지 이곳이 모두 가능하다고 생각한다. (실험한 적이 없다.) 그러나 지금은 유리할 수 없다. 어떤 데이터 원본의reader를 호출할 수 없다. 데이터 원본을 바꾸는 reader는load 전에 해야 한다.마지막으로 나의 해결 방법: 이 변수의 이름에 따라 다시 new가 나온다. 즉, store를 만들 때에reader를 다시 설계할 수 있다.
데이터 원본을 이용하여combo(하단 프레임의 연결)를 진행하는데 위에서 이미 말한 부분이 있습니다. 이것은 시스템에 써서 앞으로 자신이 무엇을 했는지 알 수 있도록 합니다!
원리: 모든combo는 자신의 데이터 원본을 가지고 있다. 연결은 첫 번째 데이터를 선택할 때 선택한 데이터가 다음 데이터 원본에 특정한 영향을 미쳐 두 번째 데이터 원본의 데이터에 제한을 가지게 하는 것뿐이다!
PS: 여기 콤보가 데이터 원본과 어떻게 연결되는지 말씀해 주세요.구체적으로 콤보의 소개를 보다.먼저 간단하게 말하면 다음과 같은 몇 가지 속성이 필요합니다. store: 데이터 원본 이름, displayField:'보이는 값','valueField:'숨겨진 값', mode:'데이터 원본 불러오는 방식', typeAhead:true,
trigger Action:'all', 데이터 원본과 관련된 속성은 기본적으로 이것뿐입니다.설정!
첫 번째combo가 가치가 있을 때, 즉 select를 진행할 때 그가 영향을 주는combo가 불러온 데이터 원본에 파라미터를 추가하여 불러옵니다!
listeners:{
select:{
fn:function(combo,record,index) {
Ext.getCmp('server').clearValue();// combo server
form_serverds.removeAll();//
form_serverds.load({
params:{areaId:Ext.get('form_areaId').dom.value}
});//
}
}
}
Listeners
예.
combo
의 속성, 감청 여부
select
사건은 때때로 촉발된다.알겠습니다. 간단합니다.
…
당시에는 머리가 두 바퀴 컸다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.