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

計算されたプロパティ定義をに追加できます。http ://jsbin.com/awufuv/edit#sourceEmber.computedを参照 してください。

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 に答える