我正在尝试扩展Ember.TextField的某些行为。我正在尝试为type="datetime-local"
输入添加一些逻辑,以便能够直接绑定日期类型的变量。
众所周知,输入值是字符串,而不是日期。因此,在扩展Ember.TextField的新类中,我需要将新属性绑定到输入,该属性基本上是将日期转换为输入期望的字符串的日期。理想情况下,我想重新打开Ember.TextField,然后仅在输入类型为datetime-local
且绑定值为Date的情况下应用此逻辑。
我的问题是:
有什么方法可以更改超类中定义的属性绑定?如果可能的话,我可以只写attributeBindings:['value:textValue']
我的View / Component子类。这将覆盖Ember.TextField中先前的值绑定定义。
虽然不是最可维护的步行路径,但是您可以init
在视图中的事件上手动删除和添加属性绑定。这是工作中的JS Bin。
只需将属性绑定视为余烬数组,并使用addObject
并removeObject
使用完整的绑定字符串(例如,value:testValue
作为方法的参数):
App.SomeView = Em.View.extend({
attributeBindings: ['value:testValue']
});
App.ModalView = App.SomeView.extend({
attributeBindings: ['role'],
testValue: 'hello', // Could be on either class
role: 'dialog',
removeBindings: function() {
// role stays bound, value doesn't
this.get('attributeBindings').removeObject('value:testValue');
}.on('init')
});
再次,这是一个工作的JS Bin。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句