Я пишу расширение браузера для сайта, который использует Backbone.js. Его уместна код выглядит следующим образом (имена изменены, чтобы защитить невинных):Как вручную вызвать метод метода Backbone.js
var BigContainer = BigContainer || {};
(function($, exports) {
var Thing = Backbone.View.extend({
...
useful_func: function() {
// Does something I need to call
},
...
});
(function($, exports) {
BigContainer.BaseView = Backbone.View.extend({
...
render: function() {
this.local_thing = new Thing({
el: '.local_thing'
});
}
...
});
Я также вставить код в <script>
блок для прослушивания postMessage()
звонков, которые я делаю из моего внутреннего абонента закачиваемой файла JavaScript. Я хотел бы иметь возможность позвонить useful_func
оттуда, но не могу понять, как, или если я даже должен (а если нет, то как я могу прийти к тому же результату).
В качестве примера, я попытался следующие ссылки, все из которых проявляющиеся как неопределенные:
BigContainer.BaseView.$local_thing
BigContainer.BaseView.local_thing
Thing
document.getElementsByClassName('local_thing')[0].useful_func
Важно , так как я пишу расширение для сайта I не владею, я не могу изменить код Backbone.js сайта, чтобы помочь себе. Мне нужно работать с тем, что есть.
Где вы создания 'BaseView' пример? Вам нужно будет сделать 'inst.local_thing.useful_func' в этом конкретном экземпляре представления. – loganfsmyth
Я обновил свой код, чтобы добавить это. Они оба завернуты в функции, поэтому ссылка на экземпляр не сохраняется, из того, что я могу сказать. – Dov
Чтобы было ясно, вы определяете представления в коде, который вы указали, но где-то вы делаете var var = new BaseView(); view.render(); ', чтобы фактически создать новый isntance, поэтому используйте этот' view' с моим предыдущим фрагментом. – loganfsmyth