this.element
не дает вам innerHTML
, он дает вам настоящий HTML Element
. Компонент без тегов по определению не имеет собственных Element
. Так что this.element
обязательно равно нулю.
Самая большая причина, по которой мы не добавили эквивалентное свойство для извлечения Range
(что необходимо для представления области DOM без компонента), заключается в том, что в отличие от this.element
, Range
может изменить в течение срока службы компонента. Сделать его полностью наблюдаемым было бы дорого, а если оставить его ненаблюдаемым, то будет действительно легко создавать ошибки.
Большинство распространенных вариантов использования охватываются тем, что предлагал Гаурав: явная маркировка элементов, которые вы действительно хотите найти, и доступ к ним через querySelector
или querySelectorAll
.
Если вы делаете что-то действительно причудливое и понимаете, что это только снимок, который может устареть, то аварийный люк - Ember.ViewUtils.getViewBounds
. Он не помечен как общедоступный, но зависит от официальных проектов, таких как Ember Inspector, поэтому мы не будем нарушать его без предупреждения. Как и любой широко используемый непубличный API, мы выдадим предупреждение об устаревании и дождемся полного цикла LTS.
В случае Ember.ViewUtils.getViewBounds
можно привести веские доводы для того, чтобы просто пометить его как публичный, и если кто-то напишет RFC на этот счет, я думаю, мы сможем достичь консенсуса по этому вопросу.