javascript - 主干 - 从 subview 调用/引用父 View

标签 javascript jquery backbone.js typescript

我是 Backbone 的新手,我想知道这方面的最佳实践 - 我想要一种与 subview 的父 View 进行通信的简单方法,即调用父 View 的方法。

下面使用“桌面”和“文档” View 的基本示例:

class DesktopView extends Backbone.View{
    constructor(options?) {
        super(options);
        this.el = $('#desktop');
        this.createDocument();
    }
    createDocument() {
        dv = new DocumentView();
        $(this.el).append(dv.render());
    }
}

class DocumentView extends Backbone.View{
    constructor(options?) {
        super(options);        
        this.tagName = 'div';
        this.className = 'document';
        this.events = {
            "click": "clickHander"
        };
    };
    render() {
        return this.el;
    }

    clickHandler() {
       //COMMUNICATE WITH THE DESKTOP VIEW
    }
}

我应该为文档 View 创建一个模型并监听它的变化吗?

最佳答案

您可以使用 Backbone 事件来触发函数调用。这样做的好处是“子” View 不必知道它的父 View 。

var parent = Backbone.View.extend({
  initialize : function () {
    this.listenTo( Backbone, 'child-click-event', function ( dataFromChild ) {
      this.doSomething( dataFromChild );
    }, this );
  }
 });

var child = Backbone.View.extend({
  //...
  clickHandler : function () {
    var data; // do something and get data
    // Parent listens to this event.
    Backbone.trigger('child-click-event', data );
  }
});

关于javascript - 主干 - 从 subview 调用/引用父 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070001/

相关文章:

javascript - jquery 将两个数组(键,值)关联成一个数组

javascript - 相当于 jQuery 的 $(document) 的普通 JS 是什么?

javascript - 如何以及在何处初始化 Backbone View 中的 jquery 数据表

javascript - 即使使用 'on' 之后,JQuery 也无法识别通过主干 View 添加的元素

javascript - 不更改 iframe 中加载的输入按钮的背景颜色

Javascript 绑定(bind) 'click' 和 PreventDefault() 不起作用

javascript - AE面板: Send obj from JS to JSX

javascript - :checked not working when input tag is inside label tag CSS

javascript - 使用 mysql 数据更新 HTML 表格单元格而不是添加新单元格

html - 我在 html5 游戏中使用 crafty 样板,但 Backbone 或 jquery 存在冲突?