Ember.Binding.transform迁移到最新代码

时间:2012-07-01 08:37:02

标签: ember.js

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

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

有人可以告诉我如何将我的代码更新到新政权吗?

2 个答案:

答案 0 :(得分: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。但这只是个人偏好的问题。

答案 1 :(得分:0)

有关如何更新代码的original commit的讨论非常好。

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

value: function(key, value){
  if(arguments.length===1){
    //return something
  } else{
    //set and return something
  }
}).property('parentView.content.finishBy')