在最新的ember中,Ember.Binding.transform已被移除或替换。我有许多采用这种形式的绑定:
valueBinding: Ember.Binding.transform({
to: function(value, binding) {
//return something
},
from: function(value, binding) {
//return something
}
}).from('parentView.content.finishBy'),
有人能建议我应该如何更新我的代码以适应新的机制吗?
发布于 2012-07-01 18:43:29
您可以将计算属性定义添加到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-01 17:48:39
在original commit上有一个关于如何更新代码的很好的讨论。
但是,在您的示例中,我认为您可以只使用计算属性:
value: function(key, value){
if(arguments.length===1){
//return something
} else{
//set and return something
}
}).property('parentView.content.finishBy')
https://stackoverflow.com/questions/11280613
复制相似问题