Ember 1.13升级
Ember 1.13 upgradation
我正在将代码从 Ember 1.0.4 升级到 Ember 1.13。当我使用 ember 1.13 执行以下代码时,出现错误
title: Ember.computed('content.title', 'managedObject.isHome', 'managedObject.finalManagedObject', {
set: function(name, value) {
this.set('content.title', value);
},
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == Core.rootNode) {
return "Home";
}
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}),
我在执行代码时遇到以下错误。
Uncaught SyntaxError: Unexpected token this
我认为 this
引用丢失了。尝试用下面的代码替换您的代码,
title: Ember.computed('content.title', 'managedObject.isHome', 'managedObject.finalManagedObject', {
set(name, value) {
this.set('content.title', value);
},
get() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == RSuite.rootNode) {
return "Home";
}
}),
您正在使用一个对象来定义计算 属性。该对象必须具有 get
并且可能具有 set
函数。两者都存在。但是你有六个额外的对象定义中的语法无效。您正在尝试构建这样的对象:
{
set: function(name, value) {
this.set('content.title', value);
},
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == RSuite.rootNode) {
return "Home";
}
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
该对象的有效部分是:
{
set: function(name, value) {
this.set('content.title', value);
},
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
根据您的 babel 配置,您可以将其简化为:
{
set(name, value) {
this.set('content.title', value);
},
get() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
我希望现在一切都清楚了。这与从 Ember 1.0.4 升级到 Ember 1.13 特别无关。请记住 Ember 1.13 已经很老了。 2.0 是三年多前发布的。因此,我强烈建议您继续迁移,直到您至少达到 2.18。
我使用以下代码得到了答案:
title: Ember.computed('content.title', 'managedObject', 'managedObject.label', 'managedObject.finalManagedObject.displayName', {
set: function(titleKey, newTitle) {
this.set('content.title', newTitle);
if (newTitle !== undefined) {
return newTitle;
} else if (this.get('managedObject') === Core.rootNode) {
return 'Home';
}
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
},
get: function() {
var title = this.get('content.title');
if (title !== undefined) {
return title;
} else if (this.get('managedObject') === Core.rootNode) {
return 'Home';
}
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}),
感谢 Rinold Simon 和 jelhan 的建议。
我正在将代码从 Ember 1.0.4 升级到 Ember 1.13。当我使用 ember 1.13 执行以下代码时,出现错误
title: Ember.computed('content.title', 'managedObject.isHome', 'managedObject.finalManagedObject', {
set: function(name, value) {
this.set('content.title', value);
},
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == Core.rootNode) {
return "Home";
}
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}),
我在执行代码时遇到以下错误。
Uncaught SyntaxError: Unexpected token this
我认为 this
引用丢失了。尝试用下面的代码替换您的代码,
title: Ember.computed('content.title', 'managedObject.isHome', 'managedObject.finalManagedObject', {
set(name, value) {
this.set('content.title', value);
},
get() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == RSuite.rootNode) {
return "Home";
}
}),
您正在使用一个对象来定义计算 属性。该对象必须具有 get
并且可能具有 set
函数。两者都存在。但是你有六个额外的对象定义中的语法无效。您正在尝试构建这样的对象:
{
set: function(name, value) {
this.set('content.title', value);
},
if (this.get('content.title') !== undefined) {
return title;
}
if (this.get('managedObject') == RSuite.rootNode) {
return "Home";
}
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
该对象的有效部分是:
{
set: function(name, value) {
this.set('content.title', value);
},
get: function() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
根据您的 babel 配置,您可以将其简化为:
{
set(name, value) {
this.set('content.title', value);
},
get() {
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}
我希望现在一切都清楚了。这与从 Ember 1.0.4 升级到 Ember 1.13 特别无关。请记住 Ember 1.13 已经很老了。 2.0 是三年多前发布的。因此,我强烈建议您继续迁移,直到您至少达到 2.18。
我使用以下代码得到了答案:
title: Ember.computed('content.title', 'managedObject', 'managedObject.label', 'managedObject.finalManagedObject.displayName', {
set: function(titleKey, newTitle) {
this.set('content.title', newTitle);
if (newTitle !== undefined) {
return newTitle;
} else if (this.get('managedObject') === Core.rootNode) {
return 'Home';
}
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
},
get: function() {
var title = this.get('content.title');
if (title !== undefined) {
return title;
} else if (this.get('managedObject') === Core.rootNode) {
return 'Home';
}
return this.get('managedObject.label') || this.get('managedObject.finalManagedObject.displayName');
}
}),
感谢 Rinold Simon 和 jelhan 的建议。