【问题标题】:Nativescript: several quick taps on the button creates multiply load of navigated pageNativescript:按钮上的几次快速点击会创建导航页面的多重加载
【发布时间】:2018-12-15 11:50:19
【问题描述】:

在使用原生 JS 在 Nativescript 中创建登录页面时,我发现如果我多次单击登录按钮,导航页面也会加载多次。这当然不是预期的行为。

在此处查看我的代码:https://play.nativescript.org/?template=play-js&id=wMZRmJ&v=2

我尝试调用 onTAP 函数,以及处理 TAP 事件 tapButtonLoginEvent.on(gestures GestureTypes.tap ... 正如您在项目中看到的那样。我还尝试将所有内容作为 Promise 传递(和链接) ,不幸的是,没有任何工作正常。 登录:l:“admin”,p:“admin”

这是来自 TJ VanToll https://play.nativescript.org/?template=play-ng&id=Hqp5UQ&v=30 的工作示例,效果很好,但是我不太熟悉 Angular...

感谢您的建议。

【问题讨论】:

    标签: javascript promise nativescript


    【解决方案1】:

    查看您的代码,当然这是预期的行为。您的登录功能是异步的,必须访问 Kinvey API 并返回响应,这可能需要几秒钟的时间,具体取决于设备的互联网连接。

    您的点击事件是同步的,因此您点击多少次,它就会执行相同的登录功能,并在成功响应后导航到您点击多少次的页面。

    您必须使用加载对话框来阻止 UI,或者至少在您仍在处理登录请求时禁用登录按钮。失败时隐藏指示器/启用按钮返回。如果成功,则导航到新页面。这是您在任何类型的应用程序开发中都会遵循的常见行为。

    【讨论】:

    • Manoj,感谢您的回答。我已经尝试在第一次点击事件发生后禁用登录按钮,但是它也不起作用。下一页仍然可以加载多次。请看这里:play.nativescript.org/?template=play-js&id=wMZRmJ&v=3
    • 登录:admin,密码:admin
    • 我很确定当您第一次登录后从家返回登录页面时一定会发生这种情况?因为您在页面加载事件上添加了点击事件,每次加载或重新加载页面时都会调用该事件(导航回表单主页)。所以第二次你会有 2 个点击事件,第三次有 3 个点击事件,所以它会被多次加载。通过向页面加载事件添加一些条件来添加来自 XML 的点击事件或不添加第二次点击事件。
    • 您的假设是正确的,加载次数会随着每次登录尝试而增加。它是由放错的点击事件引起的,绝对不能放在加载的页面事件中。但是,在这种配置中,即使应用重新启动也会发生 - 如果您非常快地单击按钮。
    • 但是我根据您的建议更改了代码,问题已解决。这里是:play.nativescript.org/?template=play-js&id=wMZRmJ&v=4.
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 2016-12-06
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多