从Sench Touch 2中的视图调用控制器javascript函数
Calling controller javascript function from view in Sench Touch 2
我正在按照miamicoder的sencha touch 2教程取得了巨大的成功(http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-2/),但是因为我仍然是新手,所以我的javascript知识限制了我一些东西。
我想做的是调用存储在控制器中的 javascript 函数,但将其传递给局部变量。这是我在初始化我的一个视图时声明的代码:
var geo = Ext.create('Ext.util.Geolocation', {autoUpdate: false, listeners: {
locationupdate: function(geo) {
console.log('Got location: ',geo);
findCurrentAddress(geo,"txtFrom");
},
//locationerror: {fn: this.onGotLocation, scope: this }
locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
alert("deal with this later")
}
}
});
geo.updateLocation();
然后查找当前地址定义为:
function findCurrentAddress(geo, txt){
alert("do some stuff with the geo object");
}
如何将此功能移动到控制器,并仍可访问此视图?就像本教程对上面提供的链接上的 onNewButtonTap 事件所做的那样。
最终结果是一样的,但我想保持干净,但不要妨碍功能。
我尝试做:
locationupdate: {fn: this.onGotLocation, scope: this }
并在控制器中连接必要的代码,除了我丢失了具有纬度/经度属性的 geo 对象(至少,我不知道如何传递它!
任何帮助/提示/指示非常感谢! :)
简单的答案 - 不要这样做。不要从视图中调用控制器的方法。
为什么不从视图中触发和事件并在控制器中订阅该事件?
像这样:
...
locationupdate: function(geo) {
console.log('Got location: ',geo);
this.fireEvent('get_loc_update', geo); //this refers to your instance of Ext.util.Geolocation
},
...
并在控制器(或任何你称之为它)中侦听你的get_loc_update事件,这将传递 geo 对象
相关文章:
- 如何在单击复选框后调用控制器方法
- 未调用控制器
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 调用控制器后Ajax抛出错误
- 如何在使用$timeout进行指令渲染后调用控制器方法
- AngularJs 从指令中的另一个调用控制器
- 有没有办法从 javascript 函数调用控制器操作
- Angularjs:路由后如何调用控制器函数
- MVC 下拉列表更改事件未正确调用控制器中的操作
- Angularjs指令调用控制器函数
- ng重复调用控制器功能的次数太多
- 如何在angular js中从指令调用控制器函数
- 使用ng-include调用控制器时AngularJS路由解析
- Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数
- 通过javascript调用控制器方法
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何使用ajax从javascript调用控制器函数
- 角度ng重复支持从0到n重复,而不调用控制器
- 在视图中未使用Javascript调用控制器操作
- 从AngularJS中的视图调用控制器函数