ES6中的 Backbone.js 事件

qv7cva1a  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(143)

我已经在ES5中使用Backbone很长一段时间了,我希望尝试在ES6中构建一个新项目。我构建了这个非常基本的视图,只是为了测试我的构建过程等。
我可以让视图在el中按预期呈现。但是,我似乎根本无法让事件触发。我确信我遗漏了一些简单的东西,但我似乎找不到它是什么。
第一个

vbopmzt1

vbopmzt11#

正如您在构造函数中所看到的,您在调用Backbone.View的代码之后定义了events,该代码执行诸如解析事件散列和绑定事件之类的操作。

constructor(options) {
    super();
    // ^---- don't have an event hash when this code executes.
    this.events = { // this is now useless
        'click #bc': 'clickHandler'
    };

super(options)和在options中传递事件哈希可能会工作。简单而优雅的解决方案:使用Backbone.View.extend()而不是class。使用class和 Backbone.js 网只会带来一些缺点。您仍然可以在项目中使用所有其他ES6特性。

eeq64g8w

eeq64g8w2#

正如TJ所推荐的,这个解决方案运行良好。再次感谢。我们正在考虑是否应该让Backbone在ES6上工作,因为我们目前在ES5上使用它,而不是完全重新工具化到Vue.js上,所以这是我们旅程中很好的第一步。

import $ from "jquery";
import _ from 'underscore';
import Backbone from 'backbone';

class basicView extends Backbone.View {
	constructor(options) {
		super(options);
		this.options = options;
		this.render();
	}

	render() {
		$(this.options.el).append('<a id="bc" href="#">button</a>');
		return this;
	}

	clickHandler() {
		console.log("click");
		return false;
	}
};

new basicView({
	el: '#container',
	events: {
		'click a#bc': 'clickHandler'
	}
});

相关问题