тлеющий уголек.Яш + руль: оказываем против против против против частичного выхода вид контроля
есть разбросанные объяснения каждого вокруг, но я все еще не на 100% ясно о различиях и использовании. Может ли кто-нибудь дать мне параллельное сравнение?
{{outlet}}
{{outlet NAME}}
{{render}}
{{partial}}
{{view}}
{{control}}
Примечание: этот пост был очень полезен с частичной vs render
4 ответа:
все они являются помощниками шаблонов со следующими основными характеристиками, как описано в руководствах emberjs. (http://emberjs.com/guides/templates/rendering-with-helpers/)
1.
{{outlet}}
- отображает шаблон на основе маршрута, определенного маршрутизатором. На основе маршрута используются соответствующие контроллер и вид. это полезно при визуализации содержимого на основе маршрута, который является наиболее распространенным случаем.2.
{{outlet NAME}}
- Предоставляет возможность указать в маршруте, где именно будет отображаться контент. полезно при попытке отобразить содержимое из нескольких шаблонов для маршрута.3.
{{render}}
- аналогичноoutlet
но контроллер / вид / модель могут быть указаны прямо или косвенно от помощника. Полезно, когда требуется отображать содержимое из нескольких шаблонов с возможностью переопределения контекста (представления/контроллера) и модели. Если модель указана, она использует уникальный экземпляр соответствующего контроллера, в противном случае он будет использовать одноэлементный экземпляр. полезно, когда требуется, чтобы переопределить контекст и модель маршрута, при рендеринге содержимого нескольких шаблонов.4.
{{control}}
- работает как рендер, за исключением того, что он использует новый экземпляр контроллера для каждого вызова, вместо повторного использования одноэлементного контроллера. При использованииrender
невозможно использовать несколько рендеров для одного и того же маршрута без указания модели, в этом случаеcontrol
должен быть использован. полезно для поддержки новых экземпляров контроллера для каждого отображаемого содержимого шаблона.обновление: помощник управления был удален https://github.com/emberjs/ember.js/commit/86eecd7ef7cdc7d2ea6f77b3a726b293292ec55d .
5.
{{partial}}
- принимает шаблон, который будет отображаться в качестве аргумента, и отображает этот шаблон на месте. Он не изменяет контекст или область действия. Он просто отбрасывает данное шаблон на место с текущей областью действия. Таким образом, класс представления не указан для частичного. полезно, когда требуется разбить шаблон на модули шаблонов, для лучшего управления или повторного использования, без создания каких-либо классов представления.6.
{{view}}
- это работает как частичный, но класс представления предоставляется. Класс смотреть шаблон для использования. полезно при разбиении шаблона на модули, но требуется класс представления, например, для события обращение.7.
{{#view}}
- существует также блочная форма помощника представления, которая позволяет указать шаблон дочернего представления, встроенный в шаблон родительского представления. (http://emberjs.com/guides/views/inserting-views-in-templates/)
{{outlet}}
это определяет, где вложенные ресурсы/маршруты будут отображаться в маршруте шаблон
{{outlet NAME}}
это создает именованный выход, где вы можете программно отобразить что-то вApp.PostRoute = App.Route.extend({ renderTemplate: function() { this.render('favoritePost', { // the template to render into: 'posts', // the route to render into outlet: 'posts', // the name of the outlet in the route's template controller: 'blogPost' // the controller to use for the template }); this.render('comments', { into: 'favoritePost', outlet: 'comment', controller: 'blogPost' }); } });
{{render}}
принимает два параметра:первый параметр описывает контекст для установки Необязательным вторым параметром является модель, которая будет передана контроллеру при условии
{{render}}
выполняет несколько вещи:когда модель не предоставляется он получает одноэлементный экземпляр соответствующего контроллера Когда модель получает уникальный экземпляр соответствующего контроллера Отображает именованный шаблон с помощью этого контроллера Устанавливает модель соответствующего контроллера
{{partial}}
принимает шаблон для отображения в качестве аргумента и отображает этот шаблон на месте (используя текущую область в качестве контекста).
{{view}}
этот помощник работает как частичный помощник, за исключением того, что вместо шаблона, который будет отображаться в текущем шаблоне, вы предоставляете класс представления. Представление управляет отображением шаблона.
{{control}}
и устаревший работает как рендер, за исключением того, что он использует новый экземпляр контроллера для каждого вызова, вместо повторного использования одноэлементного контроллера.большую часть этого я просто скопировал и вставил из своей документации: http://emberjs.com/guides/templates/rendering-with-helpers/
render
помощник устарел в v2.x вместо этого вам нужно использовать Эмбер-в другом месте аддон. https://emberjs.com/deprecations/v2.x/#toc_rendering-into-a-render-helper-that-resolves-to-an-outletember.view
является устаревшим в v1.х вместо того, чтобы использовать компонент. см. https://emberjs.com/deprecations/v1.x/#toc_ember-viewcontrol
помощник только экспериментальный, его уже удаленоя бы сказал в настоящее время только
{{outlet}}
рекомендуется один оставшийся все либо устарели / удалены.
основные различия
{{view}}
оказывает предоставляемых класс представления, который должен быть доступен
{{partial}}
отображает шаблон, доступный в Ember.ШАБЛОНЫ. возможно, он не связан с классом представления. Преимущество заключается в том, что контекст шаблона остается родительским представлением.
{{outlet}}
укажите маршрутизатор, который здесь должен отображать предоставленное представление или шаблон или в соответствии с крючком renderTemplate ().
{{outlet NAME}}
полезное если вы хотите отобразить два вида / шаблона в разных положениях. Вы можете назвать розетки и попросить маршрутизатор выполнить рендеринг.
{{render}}
то же, что и розетка, за исключением того, что вы заставляете маршрутизатор отображать определенный вид/шаблон.