2013-03-06 2 views
17

В Ember определение свойства как вычисленного псевдонима для другого свойства (или свойства другого объекта) с использованием Ember.computed.alias('otherProperty') похоже имеет в основном тот же результат, что и определение его как привязки к этому свойству с использованием propertyNameBinding: 'otherProperty'.В чем разница между Ember.computed.alias и Ember.binding?

Я просмотрел источник и документацию, но я не могу найти причин, по которым один из них был бы предпочтительнее другого. Очевидно, что шаблоны используют привязки, что хорошо, но для свойств, например. контроллеров или для ссылки на свойство контроллера на представление, есть ли разница?

ответ

14

Псевдоним может быть заменен на extend(), полностью устраняя связь с другим ключом.

Краткое описание: У меня есть класс связанных с временем функций и классов, а классы имеют свойство unit (для дня, минуты и т. Д.) И свойство precision. Обычно они функционально идентичны. В одном или двух классах они расходятся. Ember.computed.alias разрешает precision для псевдонима до unit для большинства случаев, но при необходимости его переопределяет своим значением.

Обратите внимание, что create() будет использовать установщик псевдонимов вместо переопределения.

Кроме того, установка псевдонима с нулевым объектом на своем пути может взорваться, а привязка просто не синхронизируется, если путь не ведет нигде.

Пожалуйста, смотрите комментарий Морготы ниже в мягкое устаревание из * Binding синтаксиса

+0

Это единственная разница? –

+1

Ну, кроме того, с привязкой, если путь к другому концу привязки нарушен, у вас все еще есть локальная копия переменной. Псевдоним работает только в том случае, если этот путь находится в такте. –

+8

привязка мягко устарела в пользу 'Ember.computed.alias' https://github.com/emberjs/ember.js/issues/1164#issuecomment-23200023 – morgoth

Смежные вопросы