Ember.js 如何将转换函数绑定到属性?

Ember.js 如何将转换函数绑定到属性?,ember.js,Ember.js,我希望有一个TextField的子类,它将转换应用于值,但我希望特定的转换是动态的 我天真地这样做了: {{transforming-input transformer=myTransformer ...}} TransformingInputComponent = Ember.TextField.extend({ transformedValue: function() { var transformer = this.get('transformer'); return

我希望有一个TextField的子类,它将转换应用于
,但我希望特定的转换是动态的

我天真地这样做了:

{{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