2014-10-10 4 views
6

파일 필드에서 확장 된 구성 요소 인 이 있는데이 구성 요소에 'serverPath'라는 사용자 지정 속성이 추가되었으며 getter 및 setter도 정의했습니다.extjs 5 : 구성 요소의 사용자 지정 속성에 대한 데이터 바인딩을 만듭니다.

코드 :

Ext.define('MyApp.ux.Field.File',{ 
    extend:'Ext.form.field.File', 
    xtype:'myfilefield', 
    serverPath:'', 
    getServerPath:function(){ 
    return this.serverPath; 
}, 
setServerPath:function(serverPath){ 
    this.serverPath = serverPath; 
} 
}); 

Ext.create('MyApp.ux.Field.File',{ 
    bind:{ 
     serverPath:'{serverPath}' 
    }, 
    viewModel:{ 
     type:'myViewModel' 
    } 
}); 

나는 myViewModel의 정의를 붙여되지 않습니다. 간단하다.

바인딩이 적용되지 않습니다.

아무도 도와 줄 수 있습니까?

Ext.define('MyApp.ux.Field.File',{ 
    extend:'Ext.form.field.File', 
    xtype:'myfilefield', 
    config: { 
    serverPath:'' 
    } 
}); 

그리고는 ExtJS는 세터와 게터 당신을위한뿐만 아니라 세터를 생성하기 때문에 모든 설정을해야한다 :

답변

8

클래스가 있어야한다. 뷰 모델에서 당신이 있는지 확인 A :

data: { 
    serverPath : 'yourPathGoesHere' 
} 

편집 실종 된 두 가지가 있습니다

  1. 는 뷰 모델의 값이 변경이 비동기 적으로 게시 변경하는 경우는 스케줄러. 변경 사항을 즉시 반영하려면 ViewModel에서 알림을 사용하거나 변경 후 로직을 deffer해야합니다.
  2. 변경 사항을 ViewModel에 알리기 위해 클래스의 사용자 정의 구성 속성을 가져 오려면 'publishes'구성 등록 정보에 추가해야합니다. 이 부분은 updated fiddle을 참조하십시오.
+0

나는 당신의 제안을 시도했으며, 그것이 효과가 없다는 것을 알게되어 유감스럽게 생각합니다. – happyyangyuan

+0

안녕하세요, JSFiddle/Sencha Fiddle의 일종을 제공 할 수 있다면 좋을 것입니다. 그러면 문제를 재현하고 도움이 될 수 있습니다. –

+0

안녕하세요, 너에게 너무 많이 쓰다. 전체 문제는 여기에 있습니다 : https://github.com/happyyangyuan/Q-A/issues/1 – happyyangyuan