因此,我正在将一个小型 Backbone 应用程序移植到 RequireJS 设置中,令人惊讶的是,我遇到了这段代码的问题:
define([
'jquery',
'underscore',
'backbone',
'channel',
'templates'
], function ($, _, Backbone, channel, JST) {
'use strict';
var SomeView = Backbone.View.extend({
// ... template, render
initialize: function () {
var that = this;
// was working previosuly, not sure why not now...
// this.collection.on('reset', function() {
// that.render()
// });
// hack:
this.collection.deferred.then(function () {
that.render()
});
所以,我发现引入这样的事件总线会有所帮助:
this.listenTo(channel, 'reset', function (id) {
that.render()
});
但我不确定我是否想念别的东西。RequireJS 模块之间的通信通常涉及事件总线,还是我可以用另一种方式调试丢失的“重置”事件?
谢谢!