从应用路由器触发事件
Trigger event from an approuter
我创建了一个应用程序,它运行良好,大多数功能只是应用程序对不同事件做出反应。 我想实现一个路由器,以便用户能够与其他用户等显示他们的搜索结果。 问题是路由器似乎设置正确,因为当我使用它直接将内容附加到正文时,一切都按预期工作。 当我尝试使用路由器触发事件时,尽管没有任何反应,任何帮助将不胜感激。 值得一提的是,我想这不是完整的代码,而只是似乎与我遇到的问题相关的部分。
IEG = new Backbone.Marionette.Application();
IEG.addRegions({
searchBox: '#searchBox',
resultBox: '#resultBox',
modalBox: '#modalBox',
recipientBox: '#recipientBox',
confirmBox: '#confirmToggleActive'
});
IEG.vent = _.extend({}, Backbone.Events);
IEG.Router = Backbone.Marionette.AppRouter.extend({
routes: {
'': 'index'
},
index: function () {
IEG.vent.trigger("default"); ////TRIGGER EVENT DOES NOT WORK
//$(document.body).append("Index route has been called..");
}
});
SearchBoxView = Backbone.Marionette.ItemView.extend({
template: Handlebars.templates['search'],
events: {
'click #addGroup': 'addGroup',
'keyup #searchStr': 'evaluateSearch'
},
addGroup: function () {
IEG.vent.trigger("addGroup");
},
clearValidationMsg: function () {
$('#searchErrors').html("");
},
evaluateSearch: function (e) {
console.log("keyup DO SOMETHING> ", e.keyCode);
if (e.keyCode === 13) {///press enter execute search
var searchStr = $('#searchStr').val().trim();
if (searchStr) {
IEG.vent.trigger("searchGroups", searchStr);
}
}
else if (e.keyCode === 8 || e.keyCode === 46) {//backspace and delete keys
var searchStr = $('#searchStr').val().trim();
if (!searchStr) {//when searchbar is cleared show all groups
IEG.vent.trigger("searchGroups", null)
}
}
},
validateEmail: function (searchStr) {
return /^.+@.+'..+$/.test(address);
}
});
$(document).ready(function () {
IEG.start();
new IEG.Router;
Backbone.history.start();
IEG.vent.on("default", function () {
var SBV = new SearchBoxView();
IEG.searchBox.show(SBV);
IEG.searchColl = new GroupEntries();
IEG.searchColl.fetch({
data: {
cmd: 0, //search groups
searchStr: null //if null show all groups
},
success: function (data) {
searchResults = new SearchResultsView({ collection: IEG.searchColl });
IEG.resultBox.show(searchResults);
}
});
});
});
确保在
触发事件之前定义了事件侦听器。最有可能的是,事件触发器工作正常,但是您的事件侦听器是在路由器触发事件后注册的,没有任何反应......
相关文章:
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- Iron:路由器在更改路由器上添加事件
- 未从url激发事件上的主干路由器
- 无法解除绑定并关闭我的主干路由器中的事件
- 主干路由器导航到../#/<路由>而不触发路由器事件.如何
- 在一个控制器 ui 路由器中的所有 $state.go() 事件之前运行 check
- 带路由器的流星 - 模板事件未触发
- 从应用路由器触发事件
- 在 ui 路由器状态之间发送事件
- 一个“;监听路由器”;(响应视图/模型中的路由器事件)
- Angular 2路由器全局状态更改事件
- Marionette事件聚合器vs主干路由器
- 主干路由器创建多个视图,从而导致多个事件绑定到同一视图
- Ember.js-在控制器/路由器链上传播事件
- Emberjs常见路由器事件
- 访问页面时未触发主干网/Marionette路由器事件
- 如何在Backbone.js中跟踪路由器更改事件
- 路由器(发射器)和处理器(监听器)中的Node.js事件
- React-router:从路由器获取参数,监听事件失败
- Angular UI路由器:我应该在哪里改变状态?控制器吗?服务?事件监听器