Это должно работать так, как вы ожидаете, что оно будет работать. Код в вопросе в источнике марионеток здесь: https://github.com/marionettejs/backbone.marionette/blob/master/src/marionette.itemview.js#L49-L51
вызова bindUIElements()
является то, что преобразует ui
хэша, чтобы объекты селектора JQuery, и он вызывается непосредственно перед вызовом метода onRender
называется.
Вы видите ошибки? Или селектор просто ничего не возвращает и не влияет на элементы?
Update:
Ах! Конечно ... Я не обращал внимания на ваш код достаточно близко. Вы правы в том, что селектор элементов пользовательского интерфейса происходит до того, как вы добавите подзадачу в регион. Я никогда не сталкивался с этой ситуацией раньше ... но это похоже на то, что мы хотели бы исправить/поддержать.
На данный момент лучшим обходным решением, которое я могу предложить, было бы назвать «this.bindUIElements();» в самом конце вашего метода onRender. Это заставит элементы ui повторно привязываться к селекторам.
Я также добавлю проблему в список проблем github, чтобы найти лучшее решение для этого. Я не знаю, когда я смогу дойти до этого, но это, по крайней мере, будет в списке вещей, которые нужно исправить.
Ошибок не существует. Я добавил несколько примеров console.logs выше. Селектор отключает выбор, но он возвращает два других элемента. Как вы можете видеть на втором console.log, тот же селектор, завернутый в $ works. – Bart
Глядя на источник, я думаю, что вижу проблему. Эти элементы привязаны до того, как элемент SELECT добавлен в onRender. Возможно, добавление таких регионов, как onRender, не является лучшей практикой. Есть ли у вас другая рекомендация? – Bart
Спасибо за обновление! – Bart