Я создал простой вид, MyView
, который простирается от ItemView
. Затем, когда я создаю экземпляр MyView
, я пытаюсь добавить ссылки на элементы пользовательского интерфейса в представлении, а также события, которые используют эти элементы интерфейса.Использование Backbone.Marionette, почему я не могу ссылаться на элементы @ui при создании нового экземпляра представления?
HTML
<div id="container"></div>
<script type="text/template" id="my-template">
<p>This is a rendered template.</p>
<button data-ui="changeModelNameButton">Change Model Name</button>
</script>
JS
// Define a custom view that extends off of ItemView
var MyView = Marionette.ItemView.extend({
template: "#my-template"
});
// Instantiate the custom view we defined above
var view = new MyView({
el: "#container",
ui: {
changeModelNameButton: '[data-ui~=changeModelNameButton]'
},
events: {
'click @ui.changeModelNameButton': function() {
alert('here');
}
}
});
// Render the view in the element defined within the custom view instantiation method
view.render();
Я получаю следующее сообщение об ошибке в консоли:
Uncaught TypeError: Cannot read property 'changeModelNameButton' of undefined
Я заметил, что если я переместил объявления ui в определение представления, он отлично работает, но я хотел бы знать, почему я не могу добавить их при создании экземпляра. Нет ли способа добавить их в экземпляр, или я чего-то не хватает?
Примечание: Я использую Backbone 1.3.3, 2.4.4 марионеток, подчёркивание 1.8.3 и JQuery свойства 3.1.1