1

Ember.Binding.transform 在最新的 ember 中已被删除或替换。我有许多采用这种形式的绑定:

valueBinding: Ember.Binding.transform({
  to: function(value, binding) {
    //return something
  },
  from: function(value, binding) {
    //return something
  }
}).from('parentView.content.finishBy'),

谁能建议我如何将我的代码更新为新制度?

4

2 回答 2

1

您可以将您的计算属性定义添加到Ember.computed,请参阅 http://jsbin.com/awufuv/edit#source

Ember.computed.finishBy = function() {
  return Ember.computed('parentView.content.finishBy', function(key) {
    var finishBy = Ember.getPath(this, 'parentView.content.finishBy');
    return finishBy === 'now';
  }).cacheable();
};

然后你可以像这样使用它:

App.obj = Ember.Object.create({
  parentView: {
    content: {
      finishBy: 'now'
    }
  },
  finishProp: Ember.computed.finishBy()
});

在https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/computed.js#L417-434中查看更多示例


只是要明确一点:您不必将自定义计算属性添加到Ember.computed. 您基本上可以在代码中的任何位置声明该函数。现在我考虑了一下,您可能希望将助手添加到应用程序命名空间,而不是将其添加/污染到Ember. 但这只是个人喜好问题。

于 2012-07-01T10:43:29.403 回答
0

关于如何更新代码的原始提交有一个很好的讨论。

但是,在您的情况下,我认为您可以只使用计算属性:

value: function(key, value){
  if(arguments.length===1){
    //return something
  } else{
    //set and return something
  }
}).property('parentView.content.finishBy')
于 2012-07-01T09:48:39.040 回答