coffeescript 1.7 破坏了我的 ember.js 计算属性

Posted

技术标签:

【中文标题】coffeescript 1.7 破坏了我的 ember.js 计算属性【英文标题】:coffeescript 1.7 broke my ember.js computed properties 【发布时间】:2014-02-25 01:10:06 【问题描述】:

鉴于以下咖啡脚本。

App.Whatever = Em.ArrayController.extend
  clean: Em.computed ->
    @get('content').filterBy('clean', true)
  .property 'content'

Coffeescript

App.Whatever = Em.ArrayController.extend(
  clean: Ember.computed(function() 
    return this.get('content').filterBy('clean', true);
  ).property('content')
);

现在 Coffeescript 1.7 输出:

 App.Whatever = Em.ArrayController.extend(
  clean: Ember.computed(function() 
    return this.get('content').filterBy('clean', true);
  )
 ).property('content');

这似乎是一个外卖。我是否遗漏了任何内容,还是必须重写所有计算属性?

Example

【问题讨论】:

【参考方案1】:

我认为您将咖啡脚本用于链式属性的方式未记录在案。我相信链接的官方方法是使用括号来明确定义属性的附加位置......

App.Whatever = Em.ArrayController.extend
  clean: Em.computed( ->
    @get('content').filterBy('clean', true)
  ).property 'content'

或者,如果你真的想避免使用括号,你可以这样写

App.Whatever = Em.ArrayController.extend
  clean:
    Em.computed ->
      @get('content').filterBy('clean', true)
    .property 'content'

上面的两个例子都编译成

App.Whatever = Em.ArrayController.extend(
  clean: Em.computed(function() 
    return this.get('content').filterBy('clean', true);
  ).property('content')
);

更新:CoffeeScript 1.7 新功能...

来自文档...Leading . now closes all open calls, allowing for simpler chaining syntax.

$ 'body'
.click (e) ->
  $ '.box'
  .fadeIn 'fast'
  .addClass '.active'
.css 'background', 'white'

会输出...

$('body').click(function(e) 
  return $('.box').fadeIn('fast').addClass('.active');
).css('background', 'white');

【讨论】:

以上是关于coffeescript 1.7 破坏了我的 ember.js 计算属性的主要内容,如果未能解决你的问题,请参考以下文章

升级 android studio 破坏了我的颤振构建(macOS)

MetaMaskOnboarding 变量破坏了我的代码

CocoaPods 破坏了我的项目

Android 11 更新破坏了我的文件编写代码

Xamarin.GooglePlayServices.Ads。破坏了我的项目

Firebase 工具破坏了我的 webapp 依赖项