extjs 5:为组件的自定义属性创建数据绑定

时间:2014-10-10 09:18:29

标签: binding viewmodel extjs5 custom-binding

我有一个从文件字段扩展的组件, 我添加了一个自定义属性'serverPath',我也定义了getter和setter。

代码:

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的定义。这很简单。

结果证明绑定没有生效。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:8)

你的课应该是:

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

你应该全部设置,因为ExtJS将为你和setter创建setter和getter。 在您的视图模型中,请确保您有:

data: {
   serverPath : 'yourPathGoesHere'
}

<强>被修改 缺少两件事:

  1. 当ViewModel上的值发生更改时,更改将由调度程序异步发布。如果您希望不断反映更改,则需要在ViewModel上使用notify或稍后更改逻辑。
  2. 要获取类的自定义配置属性,以通知ViewModel您需要在“publishes”配置属性中添加更改。 请参阅此updated fiddle