我有一个Sencha Touch 2项目,一切都在Web浏览器中运行良好。控制台没有错误,一切看起来都不错。然而,一旦我用Phonegap打包并在移动设备上运行它,事情就不会有效了。
我在我的应用程序的两个地方使用ext.device.notification.show
。起初,我正在做requires: 'Ext.device.*'
,虽然它在网络上运行,但应用程序无法在移动设备上运行,eclipse会给我错误消息Uncaught TypeError: Cannot read property 'name' of undefined
。我切换到requires: Ext.device.Notification
(确切的拼写和大小写),现在应用程序运行但是当我单击应该创建消息框的按钮时,我收到错误Uncaught TypeError: Cannot call method 'confirm' of undefined
。问题是我没有叫做确认的方法。在一种情况下,我有一个名为confirmItem
的方法,但对于应该调用消息框的第二个按钮,我没有远程接近“确认”的方法。
我将发布下面的一个控制器(这个控制器有confirmItem
方法):
Ext.define('MyApp.controller.MainController',
{
extend: 'Ext.app.Controller',
requires: ['Ext.device.Notification'],
config:
{
refs:
{
mainView: 'mainview',
btnConfirm: 'mainview button[action=confirmItem]',
},
control:
{
'btnConfirm':
{
tap: 'confirmItem'
},
mainView:
{
onSignOffCommand: 'onSignOffCommand'
}
}
},
// Transitions
getSlideLeftTransition: function ()
{
return {
type: 'slide',
direction: 'left'
};
},
getSlideRightTransition: function ()
{
return {
type: 'slide',
direction: 'right'
};
},
onSignOffCommand: function ()
{
var me = this;
console.log('Signed out.');
loginView = this.getLoginView();
//MainView.setMasked(false);
Ext.Viewport.animateActiveItem(loginView, this.getSlideRightTransition());
},
confirmItem: function ()
{
Ext.device.Notification.show(
{
title: 'Confirm',
message: 'Would you like to Confirm?',
buttons: ['No', 'Yes'],
callback: function (button)
{
if (button == "Yes")
{
MyApp.app.getController('MainController')
.confirmPickup();
}
else
{
console.log('Nope.');
}
}
});
},
confirmPickup: function ()
{
var me = this;
var loginStore = Ext.getStore('LoginStore');
mainView = this.getMainView();
mainView.setMasked(
{
xtype: 'loadmask',
message: ' '
});
if (null != loginStore.getAt(0))
{
var user_id = loginStore.getAt(0).get('id');
var name = loginStore.getAt(0).get('name');
var winner = loginStore.getAt(0).get('winner');
}
if (winner === 1)
{
console.log('success');
}
else
{
console.log('fail');
}
}
});
我只假设这是一个问题,因为每当我按下应调用confirmItem
的按钮时,我都会收到错误消息。我使用Ext.device.Notification correctly
,还是我错过了使其在Phonegap中运行所需的东西?
答案 0 :(得分:1)
我找到了解决方案!在使用requires: Ext.device.Notification
方面,从Sencha Touch的角度来看,一切都很好,但在Phonegap方面缺少一些东西。具体来说,我需要安装适当的插件。
打开终端并输入:Phonegap local plugin list
以查看当前安装的插件。我没有。我继续安装:
org.apache.cordova.device
org.apache.cordova.dialogs
org.apache.cordova.vibration
使用以下参考:http://docs.phonegap.com/en/3.0.0/cordova_device_device.md.html并从左侧菜单中选择选项。