Javascript 自定义计算功能senchatouch
我在Sencha Touch 2.4中工作,我想在特定的视图卡上执行计算。但是,是否可以在视图外部(可能在模型或控制器中)定义计算函数,以便在加载视图时仅调用该函数 我当前正在Activate的Javascript 自定义计算功能senchatouch,javascript,extjs,model-view-controller,sencha-touch-2,sencha-touch-2.1,Javascript,Extjs,Model View Controller,Sencha Touch 2,Sencha Touch 2.1,我在Sencha Touch 2.4中工作,我想在特定的视图卡上执行计算。但是,是否可以在视图外部(可能在模型或控制器中)定义计算函数,以便在加载视图时仅调用该函数 我当前正在Activate的事件中调用myCalc函数,结果当前显示在console的console.log()上 我的第一个问题是,是否可以在视图之外定义我的计算函数(计算中使用了两种方法),以便优化性能,并在视图中使用参数method调用参数method来计算参数method function myCalc(method) {}
事件中调用myCalc函数,结果当前显示在console的console.log()
上
我的第一个问题是,是否可以在视图之外定义我的计算函数(计算中使用了两种方法),以便优化性能,并在视图中使用参数method调用参数method来计算参数method
function myCalc(method) {}
我的第二个问题是,如何在视图上显示我的计算结果,我设置了一个名为myID
的id,如何借助id显示结果
我的代码:
xtype: 'mycard',
config: {
listeners: {
activate: 'onActivate'
},
id: 'myID',
styleHtmlContent: true
],
}
onActivate: function(me, container) {
var results = new myCalc('METHOD1');
console.log(results);
function myCalc(method) {...}
}
EDIT1:
我在计算中使用了GPS坐标。我想将它们或结果设置到我的屏幕上。如何设置HTML
或获取位置更新
之外的坐标
onActivate: function(me, container) {
var geo = Ext.create('Ext.util.Geolocation', {
autoUpdate: false,
listeners: {
locationupdate: function(geo) {
var currentLat = geo.getLatitude();
var currentLng = geo.getLongitude();
var PT = new Ext.util.Calc.myCal('METHOD1');
var c = PT.setC([currentLat, currentLng]);
//this.setHtml(c); // not working
console.log(c);
}
}
});
geo.updateLocation();
}
有几种方法可供选择:
MyApp.myCalc(参数)
。该卡的视图将侦听激活事件,调用该方法并显示结果李>
您可以使用Ext.define在自己的类中定义函数,然后在整个应用程序中使用它,如下所示:
Ext.define("Calculator", {
addition: function(num1, num2) {
return num1 + num2;
},
subtract: function(num1, num2) {
return num1 - num2;
}
...
});
您可以在它自己的文件中创建它,例如App.util.Calculator
。还可以将其用作mixin(),以便可以将此功能添加到任何其他类中
要更新卡的结果,请使用以下内容:
items: [{
title: 'Home',
iconCls: 'home',
html: 'Home Screen',
listeners: {
activate: function() {
var calc = new Calculator();
this.setHtml('2 + 3 = ' + calc.addition(2,3));
}
}
}]
编辑:这超出了您发布的代码的范围,请尝试以下操作
onActivate: function(me, container) {
var that = this;
var geo = Ext.create('Ext.util.Geolocation', {
autoUpdate: false,
listeners: {
locationupdate: function(geo) {
var currentLat = geo.getLatitude();
var currentLng = geo.getLongitude();
var PT = new Ext.util.Calc.myCal('METHOD1');
var c = PT.setC([currentLat, currentLng]);
that.setHtml(c); // not working
console.log(c);
}
}
});
geo.updateLocation();
}
谢谢我的方法,这个方法和创建自己的插件方法之间有什么性能差异吗?老实说,我不认为它们之间有太大的差异,我只考虑如何使用这个类。计算器在这样的util类中可能是最好的,它可以在整个应用程序中使用。好的,可以对其应用singleton属性,以便只进行一次计算,并且在调用视图时,它显示了以前计算的?是的,您可以这样做,并且可能在类上有一个lastResult属性,可以为您保留该信息
setHtml
给出了未定义的引用错误。我如何设置结果?我的代码位于:locationupdate:function(geo){}
如何在locationupdate
或setHtml
之外设置纬度和逻辑度?