Events emberjs:如何在视图中触发自定义事件
我想把一个基本事件(点击)变成一个语义事件,比如“deleteTodo” 这是描述的,但不是如何实现:(Events emberjs:如何在视图中触发自定义事件,events,view,ember.js,router,custom-events,Events,View,Ember.js,Router,Custom Events,我想把一个基本事件(点击)变成一个语义事件,比如“deleteTodo” 这是描述的,但不是如何实现:( 我有以下代码: App.TodoView = Em.View.extend({ click: function(e) { this.trigger("deleteTodo"); } }); App.Router.map(function(match) { match('/').to('index'); }); App.IndexRoute = Em
我有以下代码:
App.TodoView = Em.View.extend({
click: function(e) {
this.trigger("deleteTodo");
}
});
App.Router.map(function(match) {
match('/').to('index');
});
App.IndexRoute = Ember.Route.extend({
deleteTodo: function(e) {
// this code is never executed :(
}
}) ;
执行“单击”后,我看到调用了TodoView click函数,但没有调用IndexRoute中的deleteTodo函数。有什么建议吗
干杯您可以使用这个。获取(“控制器”)。发送(“删除TODO”)。这将向控制器发送一条消息,如果控制器不处理删除TODO,它将冒泡到路由器并在那里处理
click: function(e) {
this.get('controller').send("deleteTodo");
}
在路由器中,您还需要定义事件:
events: {
doStuff: function(e) {
alert("Do stuff") ;
}
}
我通常会在控制器中删除记录。似乎将其放在路由器事件中并不理想。您可以使用此选项。get(“controller”).send(“deleteTodo”)。这将向控制器发送消息,如果控制器不处理deleteTodo,它将冒泡到路由器并在那里处理
click: function(e) {
this.get('controller').send("deleteTodo");
}
在路由器中,您还需要定义事件:
events: {
doStuff: function(e) {
alert("Do stuff") ;
}
}
我通常会在控制器中删除记录。似乎将其放在路由器事件中并不理想。我无法让它工作,所以我在这里创建了一个JSFIDLE:有什么建议吗?不是这个。get('controller')。send('deleteTodo'))但要将事件发送到路由器,我们必须使用控制器中的target属性。例如,this.get('controller.target')。send('deleteTodo'))。我在这里更新了fiddle:当您将事件发送到控制器时,它会将气泡发送到路由器。我更喜欢将事件发送到控制器,以防控制器想要处理该事件,如果我忽略它,它会将气泡发送到路由器。我无法让它工作,所以我在这里创建了一个JSFIDLE:有什么建议吗?不是这个。get('controller')。send('deleteTodo'))但要将事件发送到路由器,我们必须使用控制器中的target属性。例如,this.get('controller.target')。send('deleteTodo'))。我在这里更新了fiddle:当你向控制器发送事件时,它会冒泡到路由器。我更喜欢发送到控制器,以防它想要处理事件,如果我忽略它,它会冒泡到路由器。