You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSDoc正确标注Backbone视图中的事件?

Backbone视图事件的JSDoc注释规范

我正在编写基于Backbone框架的JavaScript代码文档,需要为视图中声明的事件添加JSDoc注释,现有示例代码如下:

define([], function(Backbone){
  let myView = Backbone.View.extend({
    model: myModel,
    initialize: function() {
        /**
         * @event                  <<- 此处应如何填写?
         */
        this.model.on('change:foo', function() {
          //do something
        });
    },

    events: {
      'click .btn-next': 'onClickNext',
      'click #finish': 'onClickFinish'
    },

    /**
     * @event                  <<- 此处应如何填写?
     */
    onClickNext: function() { 
      //do something
    },
    /**
     * @event                  <<- 此处应如何填写?
     */
    onClickFinish: function() {
       //do something
    }
  });
});

参考JSDoc文档给出的写法示例:

/**
 * Description..
 * @event MyView#click
 * @listens MyView#click
 */
onClickNext(){}

针对实际场景中的疑问,整理解决方案如下:

疑问1:如何指定被点击元素的类或ID?

可以在事件名称中补充元素选择器信息,结合@listens明确监听的目标事件,示例写法:

/**
 * 处理下一步按钮点击事件
 * @event MyView#click:.btn-next
 * @listens MyView#click:.btn-next
 */
onClickNext: function() { 
  //do something
}

也可以在描述文本中明确触发元素,同时在事件标识里带上选择器,兼顾直观性和规范要求。

疑问2:对于模型中的事件,应使用@event myModel#change还是@event myView#change?

事件触发源是模型myModel,因此应该使用@event myModel#change:foo,同时用@listens标注视图监听的是模型事件,示例:

initialize: function() {
    /**
     * 监听模型foo属性变更事件
     * @event myModel#change:foo
     * @listens myModel#change:foo
     */
    this.model.on('change:foo', function() {
      //do something
    });
}

疑问3:如何指定被修改的属性?

直接在事件名称后追加:属性名即可,比如模型的change:foo事件,用@event myModel#change:foo标注,就能明确是模型的foo属性发生了变更。

内容的提问来源于stack exchange,提问作者Fill Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:52:22