【发布时间】:2016-03-23 15:39:27
【问题描述】:
我有一个非常简单的控制器,目前只有几个功能。这是一个临时解决方案,但我现在需要让它工作。 它有一个名为 timer 的 $timeout 指令,它在 3 秒内调用 stateForward 函数,然后取消计时器, 转发到下一个视图并清除缓存:
$scope.stateForward = function(){
if ($scope.navigateBool) {
$timeout.cancel($scope.timer);
$state.go('app.newtView');
$ionicHistory.clearCache();
}
};
$scope.timer = $timeout(
$scope.stateForward,
3000
);
它在浏览器中运行良好,但是当我将它编译到 IOS 或 Android 时,视图只是卡住了,没有任何反应。
【问题讨论】:
-
您在哪些设备上进行测试?您是在 Windows 或 OSX 机器上开发吗?实际上,您可以使用 Chrome(Android 设备)或 Safari(OSx 设备)的开发人员工具在您的设备上非常轻松地测试您的代码。
-
你在哪里调用“$scope.timer”函数?
-
@mhx 在 Linux (Fedora 22) 上开发。我已经在真实设备(三星 S3 mini 和 iPhone 5S)上对其进行了测试,这不是问题。问题是 $timeout 在浏览器(Chrome、Mozilla、Safari)中有效,但在手机上无效。
-
好的,这是个好消息。您熟悉开发人员工具吗?因为通过 Google Chrome 连接时,可以在连接的 Android 设备上实时“检查元素”。只需打开控制台并检查是否有任何错误。你甚至可以添加一些断点,这样你就可以一步一步地检查你的代码。检查此链接以获取更多信息:developers.google.com/web/tools/chrome-devtools/debug/… 如果可以,您能否发布您遇到的错误? (我几乎可以肯定一定有一个)所以我们可以找到解决方案。
-
@mhx 非常感谢您的提示,Chrome 调试器是一个很棒的工具。我想通了,它抛出了 ReferenceError: $ is not defined 错误,因为在下一个视图中我缺少一个 JS 库,所以它没有进入下一个视图,而是停留在当前视图上。
标签: javascript angularjs ionic-framework timeout