【问题标题】:Titanium appcelerator clear all global variables when logging outTitanium appcelerator 注销时清除所有全局变量
【发布时间】:2016-10-13 09:26:34
【问题描述】:

这里有任何 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")
})

但如果另一个用户在同一设备上登录,有时以前的用户信息仍会显示为新的用户配置文件。

请问我该如何处理?

谢谢大家。

【问题讨论】:

    标签: titanium appcelerator titanium-mobile appcelerator-titanium appcelerator-alloy


    【解决方案1】:

    首先,不要在全局变量中存储任何内容。这是可能的,但不好的做法。您可以使用lib 并将信息存储在那里。

    但话虽如此,重置全局变量应该可以解决问题。但是,您的 addEventListener 根本没有做任何事情。它应该做什么?

    addEventListener 需要 2 个属性。第一个是要监听的事件,第二个是在特定事件触发时调用的函数。假设$.logout 是一个按钮,你应该做$.logout.addEventListener('click',function(){});

    此外,如果您在窗口中显示了用户信息。您需要删除该窗口并将其从内存中清除。当您删除信息本身时,不会删除显示的信息。它基本上是您在渲染时所拥有的渲染。因此,当您希望用户注销时,请删除任何显示信息的 UI 元素并删除所有数据属性。这应该可以解决问题。

    如何使用lib

    libapp 中的一个文件夹。如果没有,请创建它。在该文件夹中,您可以创建“做事”的文件。 lib 文件中的变量在会话期间存储,就像全局变量一样。只是,它不在全局命名空间中。

    lib 文件是 commonjs 文件。您可以使用 require('myLibFile') 包含 lib 文件,而无需添加 .js 扩展名。也不要将结果存储在 Global 上,而只要在需要它的地方使用它,变量就会在那里。

    【讨论】:

    • 对不起,我忘记了事件监听器的点击,是的,我点击了这个事件(我会修改帖子),无论如何感谢您的回复,我认为这对我有很大帮助,你能不能解释我使用“lib”并在那里存储信息?,谢谢
    • 添加了!如果您不知道,请 Google 了解 commonjs 的工作原理;)
    猜你喜欢
    • 2016-03-03
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2013-04-08
    • 2020-09-05
    相关资源
    最近更新 更多