是否可以更改 Ember 视图的上下文,特别是关于 valueBinding?我有一个文本输入矩阵,其中行代表类别,列代表一周中的几天。我不想保存空值或 0 值,但是如果用户在该输入中输入小时数,则每个输入都有一些特定于它的其他数据需要保存。因此,在生成表单时,我创建了一个对象数组,每个对象都只是一个 javascript 哈希(如果该字段不存在现有条目)或 ember-data 记录(如果已存在条目)并使用其中的每一个对象作为视图的上下文。
因此,想法是,如果用户在具有现有值的字段中输入零或空字符串,则该记录将被删除,视图的上下文将替换为仍然包含其他相关信息的简单哈希该字段,以防用户返回并再次设置该值。相反,将输入添加到以前为空的字段将使用来自附加哈希的值和输入值创建一个新的 ember-data 记录。
我已经完成了删除现有记录的工作,但文本输入的 valueBinding 仍然绑定到计划删除的记录。我想立即将字段的上下文更改为占位符哈希。如果我提交事务并返回该屏幕,则记录已被删除,并且上下文现在是新生成的占位符,但我想尽快更改 TextField 视图(我已扩展)的上下文值更改为零/空。我尝试过使用this.set('context')
and this.set('valueBinding')
,但都不起作用。到目前为止,这是我的观点的代码。任何人都可以帮助我,或提出更好的选择吗?
App.HourInputView = Ember.TextField.extend({
type: 'number',
init: function(){
this._super() ;
var context = this.get('context') ;
var ph = moment(this.get('context.cal_date')).format("dd") ;
this.set('placeholder',ph) ;
},
change: function(){
var val = this.get('value') ;
if (this.contextIsRecord() && (val===0 || val==='0' || val==='')) {
var record = this.get('context') ;
var new_ctx = this.get('context').getProperties('user','site','supervisor','category','cal_date') ;
new_ctx.total = null;
this.set('context',new_ctx) ;
this.set('valueBinding',"new_ctx.total") ;
record.deleteRecord() ;
}
},
//--
contextIsRecord: function() {
var ctx = this.get('context') ;
return (typeof ctx.deleteRecord === 'function') ;
}
}) ;