gpt4 book ai didi

javascript - 如何手动调用Backbone.js View 的方法

转载 作者:行者123 更新时间:2023-11-28 02:26:11 25 4
gpt4 key购买 nike

我正在为使用 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()我从扩展程序的注入(inject) javascript 文件中进行调用。我希望能够调用useful_func从那里开始,但无法弄清楚如何,或者我是否应该这样做(如果不是,那么我如何才能得到相同的结果)。

作为示例,我尝试了以下引用,所有这些引用都显示为未定义:

  • BigContainer.BaseView.$local_thing
  • BigContainer.BaseView.local_thing
  • Thing
  • document.getElementsByClassName('local_thing')[0].useful_func

重要的是,由于我正在为不属于我的网站编写扩展,因此我无法修改该网站的 Backbone.js 代码来帮助自己摆脱困境。我需要利用现有的东西。

最佳答案

使用 BigContainer.BaseView = Backbone.View.extend({) 行,您正在定义一个名为 BaseView 的新 View 类型,但这只是定义。什么您需要的是代码中 View 的实际实例。这将是您执行 new BaseView 的地方(在本例中,如下所示:)

// Where view is created
(function($, undefined) {
BigContainer.OtherThing = {
...
create: function(config, params) {
this.view = new BigContainer.BaseView(...);
}
...
})

找到后,您将执行以下操作:

// Your code, reach into that instance and its subview, and call 'usefulFunc'.
BigContainer.OtherThing.view.local_thing.useful_func();

关于javascript - 如何手动调用Backbone.js View 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com