Ember 1.13 обновление - PullRequest
       27

Ember 1.13 обновление

0 голосов
/ 14 марта 2019

Я обновляю код с 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 ]

0 голосов
/ 14 марта 2019

Вы используете объект для определения вычисляемого свойства.Этот объект должен иметь 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.

0 голосов
/ 15 марта 2019

Я получил ответ, используя следующий код:

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');
                }
            }),

Спасибо за ваши предложения, Ринольд Саймон и Джелхан.

0 голосов
/ 14 марта 2019

Я думаю, что ссылка 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";
  }
}),
...