Ember 1.13 обновление
Я обновляю код с 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
3 ответа
Я получил ответ, используя следующий код:
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');
}
}),
Спасибо за ваши предложения Ринольд Саймон и Джелхан.
Вы используете объект для определения вычисляемого свойства. Этот объект должен иметь 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');
}
}
В зависимости от конфигурации вашей бабели вы можете упростить ее до:
{
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.
Я думаю 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";
}
}),