这里的任何appcelerator钛开发者:)?在我的应用程序移动设备上我有一个经典的登录/注销页面,登录时我有一个全局变量“Alloy.Globals.user”创建,其中包含所有用户对象(名称,照片等...),我还有一些应用程序属性( Ti.app.properties)。 当一个人从应用程序注销时,我想销毁所有全局变量和属性,实际上我做了:
$.logout.addEventListener("click",function(e){
Alloy.Globals.user = {};
Alloy.Globals.user = null;
Ti.app.properties.removeProperty("property_name")
})
但如果其他用户登录同一设备,有时以前的用户信息仍会显示为新的用户个人资料。
我该如何处理?
谢谢大家。
答案 0 :(得分:2)
首先,不要在全局中存储任何内容。这可能是坏习惯。您可以使用lib
并将信息存储在那里。
但是说,重置全局变量应该可以解决问题。但是,您的addEventListener
根本不做任何事情。该怎么办?
addEventListener
需要2个属性。第一个是要监听的事件,第二个是在特定事件触发时调用的函数。假设$.logout
是一个按钮,您应该$.logout.addEventListener('click',function(){});
此外,如果您在一个窗口中显示了用户信息。您需要删除该窗口并从内存中清除它。删除信息本身时,不会删除显示的信息。它基本上是渲染时所呈现的内容。因此,删除任何显示信息的UI元素,并在希望用户注销时删除所有数据属性。这应该可以解决问题。
如何使用lib
?
lib
是app
内的文件夹。如果您没有,请创建它。在该文件夹中,您可以创建"做东西"的文件。 lib文件中的变量在会话期间存储,就像全局变量一样。只是,它不在全局命名空间中。
lib
个文件是commonjs
个文件。您可以使用require('myLibFile')
包含lib文件,而无需添加.js
扩展名。不要将结果存储在Global
上,但只要在需要的地方需要它,变量就在那里。