首页 > 解决方案 > 标签点击上的页面导航引发异常

问题描述

我是具有 Web 开发背景的新手 NativeScript 开发人员。我正在创建一个具有(当前)两个主要页面的基本应用程序:login-page.xmlsignup-page.xml.

这是目录结构:

app
|-- app-root.xml
|-- app.css
|-- app.js

|-- signup
    |-- signup-page.xml

|-- login
    |-- login-page.xml
    |-- login-page.js

我正在尝试做的是建立往返loginand的导航signup

在阅读完此处的说明后,我想出了以下想法,以便在点击标签signup-page.xml时导航到。

<!--login/login-page.xml-->
<Label class="small-text" text="Join us" tap="goto" />  

...

<!--login-page.js-->
exports.goto = function (args) {
    args.object.page.frame.navigate("~/signup/signup-page");
}

...

<!--app-root.xml-->
<Frame defaultPage="login/login-page"></Frame>

但是,此代码不起作用。每次点击标签login-page.xml,都会引发异常。这是错误消息:

An uncaught Exception occurred on "main" thread.
com.tns.NativeScriptException:
Calling js method onTouch failed

我确保在点击标签时调用函数goto()并且signup-page.xml页面独立工作。

我如何设置一个简单的导航机制,就像它通过<a>标签在网页上发生的那样?

标签: xmlnativescript

解决方案


我终于找到了解决方案。

似乎变量框架未定义。由于习惯于一般的面向对象范式,我误认为args.object.page.

对于一般(向前)导航,我们可以使用 NativeScript 的frame 模块。这是一个Js示例:

var frame = require("ui/frame");
...
...
exports.goto = function(){
    frame.topmost().navigate("signup/signup-page");
}

注意:指定为函数参数的路径与问题中显示的目录结构有关。是的,看起来很奇怪,但是,尽管该目录在当前(登录)目录之外,但我们不必针对根目录引用它。navigate()signup


推荐阅读