首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Ember.Binding.transform迁移到最新代码

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

Stack Overflow用户
提问于 2012-07-01 16:37:02
回答 2查看 713关注 0票数 1

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

代码语言:javascript
代码运行次数:0
运行
复制
valueBinding: Ember.Binding.transform({
  to: function(value, binding) {
    //return something
  },
  from: function(value, binding) {
    //return something
  }
}).from('parentView.content.finishBy'),

有人能建议我应该如何更新我的代码以适应新的机制吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-01 18:43:29

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

代码语言:javascript
代码运行次数:0
运行
复制
Ember.computed.finishBy = function() {
  return Ember.computed('parentView.content.finishBy', function(key) {
    var finishBy = Ember.getPath(this, 'parentView.content.finishBy');
    return finishBy === 'now';
  }).cacheable();
};

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

代码语言:javascript
代码运行次数:0
运行
复制
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
EN

Stack Overflow用户

发布于 2012-07-01 17:48:39

original commit上有一个关于如何更新代码的很好的讨论。

但是,在您的示例中,我认为您可以只使用计算属性:

代码语言:javascript
代码运行次数:0
运行
复制
value: function(key, value){
  if(arguments.length===1){
    //return something
  } else{
    //set and return something
  }
}).property('parentView.content.finishBy')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11280613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档