Angular JS 和 Phonegap 后退按钮事件

2024-04-02

我有一个 MainCtrl ,其中包含历史记录的后退堆栈,如下所示;

$scope.urlHistory = [];

$scope.$on('$routeChangeSuccess', function () {
    if ($location.$$absUrl.split('#')[1] !== $scope.urlHistory[$scope.urlHistory.length - 1]) {
        $scope.urlHistory.push($location.$$absUrl.split('#')[1]);
    }
});

然后,在同一个控制器中,我有一个 GoBack() 函数,我想在按下后退按钮时调用它;

$scope.goBack = function () {
    $scope.urlHistory.pop();
    $location.path($scope.urlHistory[$scope.urlHistory.length - 1]);
};

这应该有效,因为从我的 index.html 中我用 ng-click="goBack()" 调用它,一切都按预期工作。

我将其用于设备事件,相同的控制器;

function onBackKeyDown() {
  alert("back");
  $scope.goBack();
}

document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
  // Register the event listener
  alert("deviceready");
  document.addEventListener("backbutton", onBackKeyDown, false);
};

我可以看到警报,但应用程序无法返回。但会发生一些事情,因为如果我按设备后退按钮两次,ng-click="goBack()" 会突然带我回到应用程序的起始页面。我使用 $scope 错误吗?在 Win Phone 和 Android 上体验这一点。使用 Phonegap 构建。

编辑:我真正在这里追求的是为什么我的 $scope.goBack();从设备监听器调用时,函数的工作方式有所不同。


这解决了它:

  $scope.goBack = function () {
    if (urlHistory == '/') { 
      document.removeEventListener("backbutton", onBackKey, false);

    };    
    urlHistory.pop();
    $location.path(urlHistory[urlHistory.length - 1]);
    $scope.$apply();
  };

范围.$apply();这是我的答案。在 Angular 之外执行角度表达式时,这是必要的。 (AngularJS $location 不改变路径 https://stackoverflow.com/questions/11784656/angularjs-location-not-changing-the-path)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular JS 和 Phonegap 后退按钮事件 的相关文章

随机推荐

  • 将 Javadoc 添加到 NetBeans 中的库

    我刚开始使用 NetBeans IDE 当我尝试查看 java API 的文档时 例如 Systemclass 它说 javadoc 没有安装 如何安装文档 首先 您下载 javadoc 其次 转到 工具 gt Java 平台 然后从 Ja
  • 确定递归函数的复杂性(大 O 表示法)

    我明天有计算机科学期中考试 我需要帮助确定这些递归函数的复杂性 我知道如何解决简单的情况 但我仍在努力学习如何解决这些更困难的情况 这些只是我无法解决的一些示例问题 任何帮助将不胜感激 并对我的学习有很大帮助 谢谢 int recursiv
  • 如何以编程方式询问当前应用程序的 URL 方案?

    我的 iOS 应用程序有 50 多个目标 每个目标都有自己的自定义 URL 方案 我需要检测来自 webview 的请求是否与当前运行的应用程序的方案匹配 为了做到这一点 我需要能够从代码中询问当前应用程序的 URL 方案 类似的问题涉及尝
  • MySQL如何获取特定范围内的平均值

    我有以下表格数据 value 1 5 10 5 12 36 我想将这些值映射到 range avg 0 21 1 5 10 5 12 4 21 001 34 0 34 001 64 36 64 0 基本上将每个值映射到范围并计算每个范围内所
  • Android dagger依赖循环

    我有两个具有相同范围的依赖项 彼此需要 我的依赖项是具有不同方法的域服务 每种方法都有不同的业务案例 某些业务案例可能会使用另一个领域的方法 为此 我需要域 1 可用于域 2 反之亦然 但是当我这样做时 我收到依赖循环编译错误 经过谷歌搜索
  • 指针 - 数组和指针之间的区别

    有什么区别a a和第一个元素的地址a 0 相似地p是一个指向用数组地址分配的整数的指针 会pointer 进行指针算术并根据数据类型获取值 进一步的价值是什么 预计 它应该是一个指针吗 include
  • Maya Python 中的 cmds.scriptCtx 到底有什么作用?

    我想知道 cmds scriptCtx 命令到底是做什么的 因为我尝试将其直接从 Autodesk 帮助页面复制并粘贴到我的脚本编辑器中 但没有任何反应 以下是 Autodesk 帮助中的脚本 import maya cmds as cmd
  • C#:获取 XML 文档的所有节点

    有没有一种简单的方法 从 xml 文档中获取所有节点 我需要每个节点 子节点等来检查它们是否具有某些属性 或者我是否必须爬行文档 询问子节点 在 LINQ to XML 中 这非常简单 XDocument doc XDocument Loa
  • (选择)H2 中的Where()

    我有两种软件 都是Java 一种是MySQL 另一种是H2数据库 我的问题是在 MySQL 中我有这个查询 Select from X where 1 2 3 in select 4 5 6 from Y 但在 H2 中给我这个错误 子查询
  • 教科书上的长除法如何是 O(n^2) 算法?

    Premise This 维基百科页面 http en wikipedia org wiki Computational complexity of mathematical operations建议 的计算复杂度 教科书 长除法 http
  • sprintf 用于无符号 _int64

    我有以下代码 sprintf 中第二个 d 的输出始终显示为零 我认为我指定了错误的说明符 任何人都可以帮助我编写具有正确值的字符串 这必须在 posix 标准中实现 感谢您的投入 void main unsigned int64 dbFi
  • PercentRelativeLayout 性能更高?

    我总是使用 LinearLayout 和relativelayout 并且我正在阅读有关 新 的内容百分比相对布局 http developer android com intl es reference android support p
  • 标签云网络服务?

    是否有可以生成标签云的公共免费网络服务 我正在寻找类似 Google Chart 的东西 URL 输入 图像输出 我非常怀疑 为此提供网络服务没有任何意义 不过 有大量的图书馆 代码点火器 http codeigniter com foru
  • 无法将类型“NHibernate.Hql.Ast.HqlCast”的对象转换为类型“NHibernate.Hql.Ast.HqlBooleanExpression”

    我正在使用以下 C 代码 public IList
  • 如何嵌入LLVM?

    LLVM 核心项目包括 编译器 将源代码转换为 LLVM IR VM 执行编译后的IR代码 如何将 VM 嵌入到 C 应用程序中 LLVM 实际上是一个可以链接到的库的集合 因此嵌入起来非常容易 更多时候 LLVM 会获取您生成的 IR 并
  • 如何在 Eclipse 中下载或链接 OpenCV Javadoc

    我使用 Eclipse IDE 在 Java 中使用 OpenCV 3 0 但我想将 Javadoc 附加到 OpenCV jar 以便轻松阅读有关方法和参数用法的信息 在我使用 OpenCV 2 4 10 之前 它有很好的源代码文档 可以
  • 如何在 IOS 8 Iphone 4S 上使用移动 Safari Web 应用程序获得全屏模式

    我对移动开发非常陌生 所以请不要因为新手问题而困扰我 我认为我有正确的元标记 从苹果网站来看 它说使用下面的标签来允许在全屏模式下运行 但它似乎不起作用 宽度和高度是为 IOS 8 上的 Iphone 4S 设置的 width 320px
  • 添加剪辑路径后子元素消失

    对于我正在做的一个设计项目 我想在我的辅助内容上放置一个剪辑路径 然而 在放置剪辑路径代码后 一些子元素或元素在我的 about内容 我尝试过使用position absolute or z index但我的内容没有任何反应 about内容
  • Python 海龟滚动条

    有谁知道如何防止滚动条出现在 Python 中的小窗口尺寸的 Turtle Graphics 窗口上 以下代码生成下图 对于 600 像素 x 600 像素的屏幕 不会出现滚动条 import turtle TURTLE SIZE 20 T
  • Angular JS 和 Phonegap 后退按钮事件

    我有一个 MainCtrl 其中包含历史记录的后退堆栈 如下所示 scope urlHistory scope on routeChangeSuccess function if location absUrl split 1 scope