是否可以在extjs5中动态更新绑定
Is it possible to dynamically update a bind in extjs5?
我正在尝试在extjs5中动态更改绑定,但我不太清楚这是如何实现的,或者是否可能实现,或者我只是完全错误地处理了这件事。我会试着解释我想做什么。我有一个定义如下的文本区域:
id: 'final-view',
xtype: 'textareafield',
editable: false,
bind:{
value: '{r.options}'
}
在我的视图中我有模型:
data: {
r:{
options: {}
}
}
页面布局如下:
textarea
"Add Option" button
option 1
...
option n
我有一个按钮"添加选项",它在页面上添加了一个带有选项存储的组合框,然后他们可以从下拉菜单中选择一些内容,并在组合框中键入额外的内容。当组合创建时,我有一个递增的变量,这个数字用于创建唯一的ID:
var new_opt = 'r.options.opt_' + cnt;
这用于向r.options对象添加元素,如下所示:
viewModel.set(new_opt, '');
创建的每个组合都有一个绑定,定义如下:
bind: {
value: '{r.options.opt_' + this.id.substr(14) + '}'
}
其中"this.id.substr(14)"是我的cnt变量,即1。因此,第一个选项的值绑定为"{r.options.opt_1}"。最终目标是将每个组合框中的所有内容连接并绑定到文本区域。我想做的是在添加选项时动态更新textareafield的绑定,这样当任何组合框被键入时,它都会更新最终视图。因此,例如,如果视图模型中的数据对象有两个选项:
data: {
r:{
options: {opt_1: 'value1', opt_2: 'value2'}
}
}
因此,我想将我的绑定更改为如下:
id: 'final-view',
xtype: 'textareafield',
editable: false,
bind:{
value: '{r.options.opt_1} {r.options.opt_2}'
}
在文本区域中,您将看到内容"value1 value2"。我想避免的是,每次通过循环遍历"r.options"对象中的所有元素并更改值来从头开始重新填充文本区域,所以我想如果有办法更新值字段的绑定,这会更有效。任何帮助或指导都将不胜感激,我对MVVM范式还是相当陌生的。
您很可能正在寻找setBind()方法。
只有我的2美分:对我来说,整个事情看起来过于复杂,即使你找到了让它工作的方法,也要考虑简化它
您不需要显式设置绑定。
viewModel.setData('newValue')将完成任务。
此外,您是否将这些数据存储在任何地方?如果是这样,您可能需要将其绑定到store.model字段值,那么当数据更改时,共享该模型实例的任何其他视图都将自动更新。如果是这样的话,您可能会将文本区域绑定到"{model.field}",而其余部分则会自动发生。
我希望这能有所帮助。
- d3基于用户选择动态更新节点
- 如何从相应的控制器动态更新标题和描述
- 根据CHECKBOX输入值动态更新DIV信息
- HTML动态更新滑块输入
- 如何使用ajax和jquery动态更新数组表
- 如何动态更新输入值属性
- 动态更新chartJ中的图表
- 动态更新Angular2指令中自定义属性的值
- jQuery动态更新数据键和值
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- 使用 php/jquery 动态更新单个模态
- 在 Ionic 中动态更新滚动区域
- 具有动态更新的实时标题 (AJAX+jQuery)
- jQuery:动态更新 N 个最新值的列表
- 如何动态更新选择值
- 将URL路径与<a>attr('href')来动态更新.active类
- Jquery调整大小动态更新
- 在javascript中动态更新嵌套对象
- javascript中的文本框未正确动态更新
- 动态更新Ace Editor+Requirejs的语法高亮显示