是否有一个简短的方法来编写下面的代码(来自 Rock& Roll with Ember.js 一书):
export default Ember.Controller.extend({
noSongs: Ember.computed('model.songs.length', function() {
return this.get('model.songs.length') === 0;
}),
(...)
});
我认为我可以对Controller
,get
和computed
的导入进行解构:
import { Controller, get, computed } from 'ember';
computed
内使用箭头功能代替function
吗?this.get('model.songs.length')
,因为将length
作为字符串感觉很尴尬? 答案 0 :(得分:4)
我认为我可以对
Controller
,get
和computed
的导入进行解构:
您可以使用2.16 release blog post。
中详述的新模块API我可以在
computed
内使用箭头功能代替function
吗?
不,因为该箭头函数的上下文实际上是周围的模块,而不是对象。请注意,Ember.Controller.extend
接收对象作为参数,而不是函数,并且它不是ES2015引入的class
语法。
是否有更多javascript-ish方式来执行
this.get('model.songs.length')
,因为将长度作为字符串感觉很尴尬?
长度不是字符串,它是应该具有数值的model.songs
数组的属性。您应该在Ember对象中使用.get
,否则您将无法检索计算属性。
答案 1 :(得分:1)
我可以在计算机中使用箭头函数而不是函数吗?
不,你不能。
是否有更多javascript-ish方法 this.get('model.songs.length')因为长度为a感觉很尴尬 字符串?
恕我直言,这看起来还不错。
答案 2 :(得分:1)
我可以在计算机中使用箭头函数而不是函数吗?
作为computed()
方法的第二个参数传递的函数在Ember的内容中被用作创建Ember属性描述符对象的属性。稍后调用它时(从内部调用)Ember会尝试为其分配正确的上下文(在本例中为Controller),但箭头函数不支持使用上下文调用,因此它们只会在上下文中运行他们被调用的地方。
是否有更多的javascript-ish方法来执行此操作。(' model.songs.length')因为将长度作为字符串感觉很尴尬?
那个Ember。在你使用了它一千万次后,它会感觉很自然。