Ember.js 如何将转换函数绑定到属性?
我希望有一个TextField的子类,它将转换应用于Ember.js 如何将转换函数绑定到属性?,ember.js,Ember.js,我希望有一个TextField的子类,它将转换应用于值,但我希望特定的转换是动态的 我天真地这样做了: {{transforming-input transformer=myTransformer ...}} TransformingInputComponent = Ember.TextField.extend({ transformedValue: function() { var transformer = this.get('transformer'); return
值
,但我希望特定的转换是动态的
我天真地这样做了:
{{transforming-input transformer=myTransformer ...}}
TransformingInputComponent = Ember.TextField.extend({
transformedValue: function() {
var transformer = this.get('transformer');
return transformer.apply(this, [this.get('value')]);
}.property('value'),
})
Controller = Ember.ObjectController.extend({
myTransformer: Ember.String.camelize
})
但它不起作用;当你把一个函数绑定到一个属性上时,你会得到另一边的未定义。(我通过将绑定更改为字符串来验证这不是打字错误或其他错误)我最后做的是将点路径绑定到transformer,并查找transform函数:
{{transforming-input type='text' transformer="Ember.String.handleize" ... }}
transformFunction: function() {
var path = this.get('transformer').split('.');
var scope = window;
if (Ember.isNone(window[path[0]])) {
scope = this.get('_parentView.controller');
}
for(var i=0;i < path.length; i++){
scope = scope[path[i]];
if (Ember.isNone(scope)) {
break;
}
}
return scope;
}.property('transformer'),
transformedValue: function() {
var transformer = this.get('transformFunction');
if(Ember.isEmpty(transformer)){
transformer = this.get('noop')
}
return transformer.apply(this.get('_parentView.controller'), [this.get('value')]);
}.property('value'),
{{transforming input type='text'transformer=“Ember.String.handleize”…}
transformFunction:function(){
var path=this.get('transformer').split('.');
var范围=窗口;
if(Ember.isNone(窗口[路径[0]])){
scope=this.get(“parentView.controller”);
}
对于(变量i=0;i