바인딩 모델 속성은 ExtJS로 꽤 쉽게 :이 경우사용 그리드는
// ...skipped everything until fields config for brevity
}, {
xtype: 'textfield',
bind: '{modelInstance.someField}'
}, { // ...
이 modelInstance
문자열 필드 someField
이 바인딩이 방법으로, 텍스트 상자 값 덕분에 동기화됩니다. 그리고 그것은 훌륭합니다.
모델 필드가 문자열이 아니라 배열 인 경우 동일한 종류의 동작을 얻으려고합니다.
// ...skipped everything until fields config for brevity,
// assume that viewmodel and everything else are set up as expected
}, {
xtype: 'textfield',
bind: '{modelInstance.easyField}'
}, {
xtype: 'gridfield',
bind: {
gridArray: '{modelInstance.hardField}'
}
}, { // ...
는 당연히 내가 gridfield
구성 요소가 Ext.grid.Panel
를 확장하고 modelInstance
필드 hardField
에의 저장 데이터를 동기화 할 : 나는 같은 것을 할 싶습니다
Ext.define('namespace.model.CustomModel', {
fields: ['easyField', {
name: 'hardField',
type: 'auto' // This will be an array during runtime
}],
idProperty: 'easyField'
});
:이 모델입니다. 방법
gridArray
설정을 결합 할 내가 modelInstance.hardField
배열 gridFieldItems
로 저장 초기 데이터를 기존의 주사 않는
- : 문제를 여기
Ext.define('namespace.form.field.GridField', { extends: 'Ext.grid.Panel', xtype: 'gridfield', // skip requires for brevity viewModel: { stores: { gridFieldItems: { type: 'gridfielditems' // Simple in memory store } }, data: { } }, store: '{gridFieldItems}', // This config enables binding to take place as it creates getters and setters, // gridArray is set initially to '{modelInstance.hardField}' as expected config: { gridArray: null }, // This is necessary for this grid-field component to update // '{modelInstance.hardField}' back in the owners viewModel. publishes: { gridArray: true }, // ??? // bind: { // gridArray: bind gridArray to store data somehow? // } });
것 : 현재
나는이 있습니다 우리가 그리드를 따라 가면서 업데이트가되도록 데이터를 입력하십시오.
- 이 모든 것을 우아한 MVV에서 수행하십시오 JS 객체간에 동기화를 시도하는 수많은 청취자를 작성하지 않고
이미 잘 알려진 테스트 솔루션을 제공하십시오. 이미 많은 방법을 시도했지만, 지금까지 성공하지 못했습니다.
감사 남작! 상점 데이터를 모델 필드에 바인딩한다는 아이디어는 훌륭하지만 결함이 있습니다. 우리는 저장소가 그리드 저장소가 아닌 원본 모델 배열의 레코드를 업데이트 할 수밖에 없습니다. 왜냐하면 저장소가 업데이트를 모델로 다시 푸시하지 않기 때문입니다. 이는 그리드가 그 일반성을 깨뜨리는 뷰 모델에 대한 지식을 가져야 함을 의미합니다. 게다가, 사용자에게 추가/업데이트보기를 제공하는 방법을 알지 못합니다. 나중에 내 솔루션을 게시 할 예정이지만, 이상적이지는 않지만 목적 상 괜찮을 것입니다. –
당신 말이 맞아요. 그것은 깨끗한 바인드 솔루션이었습니다. 바인드 가능 구성으로 "gridArray"만 필요한 "gridfield"구성 요소로 바이올린을 업데이트했습니다. –