Ember从普通Javascript调用一个动作处理程序
Ember call a action handler from normal Javascript
我正在用我现有的jQuery在Ember工作。现在我需要从我的jQuery方法中调用路由器中的一个动作处理程序。
我的路线:
App.ApplicationRoute: Ember.Route.extend({
actions: {
updateFolder: function(obj){
//Need to update my model using the obj.
}
}
});
JavaScript方法:
// Native Javascript code.
function updateFolderModel(obj){
// Need to call the action handler in my application route. How to call from here.
}
如何从普通的原生JavaScript方法中调用Ember动作处理程序?
您不希望外部代码知道您的Ember应用程序。在这种情况下,处理这个问题的最佳方法是使用DOM事件。DOM事件将是Ember应用程序与"外部世界"之间的通信手段。有关这方面的一些文档,请参阅http://emberjs.com/api/classes/Ember.View.html#toc_responding-to-browser-events。
例如App.ApplicationView = Ember.View.extend({
// See comment by @Wishy
click: function() {
this.send('actionThatWillBeSentToYourRoute');
},
/*
didInsertElement: function() {
var self = this;
// Replace 'click' with a custom DOM event
this.$().on('click', function() {
Ember.run(self, function() {
this.send('actionThatWillBeSentToYourRoute');
});
});
}
*/
});
Ember.run
是必需的,因为您希望在Ember运行循环中运行回调。请注意,将自定义DOM事件注册为http://emberjs.com/api/classes/Ember.Application.html#property_customEvents会更简洁一些。
那么在你的Route中你应该有
App.ApplicationRoute = Ember.Route.extend({
actions: {
actionThatWillBeSentToYourRoute: function() { ... }
}
});
注意,您可以定义自己的自定义DOM事件,例如事件updateFolder
。然后你可以输入
function updateFolderModel(obj){
$.trigger('updateFolder', obj);
}
我希望这是任何帮助!
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 一个密码测试程序,如果存在空格,它会提醒用户
- 引导程序崩溃一次只能看到一个
- 仅为一个窗体运行应用程序脚本
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- React应用程序:道具在下一个事件后更新
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 编写一个程序在别人的网站上做某事,是不可能的
- 一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
- 导出javascript对象以在另一个程序中使用它
- 如何运行一个程序,直到用户给出一定的答案(字符串+ #)
- 如何从HTML运行另一个程序
- 如何用一个代码库编写一个程序来支持多个客户的定制需求?
- 制作一个javascript聊天机器人,将聊天命令转换为另一个程序中的按键
- 一个程序有多少行代码?(我知道这是一种模糊和视情况而定,但是……)
- javascript输入另一个程序要求的密码
- 我正在尝试用JavaScript构建一个程序,该程序扫描段落并返回包含特定单词的句子