angular里的$setTimeout和原生的setTimeout有啥区别么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angular里的$setTimeout和原生的setTimeout有啥区别么相关的知识,希望对你有一定的参考价值。
参考技术A首先,angular没有 $setTimeout,是 $timeout。
简单来说$timeout 就是是对 window.setTimeout 的一层封装,功能和接口基本一样,主要的区别有以下三点:
$timeout(fn, [delay], [invokeApply])传入的第一个参数fn ( function )被包装在 try...catch 结构内,并且把抛出的异常委托给 $exceptionHandler 做统一调度处理;
$timeout 返回的不是数字 ID,而是一个 promise 对象。这无法用 window.clearTimeout 取消它,而是要用 $timeout.cancel(returnedPromise) 来取消定时;
传入的第三个参数invokeApply是一个布尔值,如果传入 false,则不会使用 $apply 来包装 function 调用,也就是说不会更新当前作用域内的数据绑定。默认是 true。
1.传入的 function 被包装在 try...catch 结构内,并且把抛出的异常委托给 $exceptionHandler 做统一调度处理;
2.$timeout 返回的不是数字 ID,而是一个 promise 对象。这意味着你无法用 window.clearTimeout 取消它,而是要用 $timeout.cancel(returnedPromise) 来取消;
3.传入的第三个参数是一个布尔值,如果传入 false,则不会使用 $apply 来包装 function 调用,也就是说不会更新当前作用域内的数据绑定。默认是 true。
最后,其实这些东西都在文档里……
原生 ios phonegap/cordova 的 Angular $templateCache 和 $stateProvider 修复
【中文标题】原生 ios phonegap/cordova 的 Angular $templateCache 和 $stateProvider 修复【英文标题】:Angular $templateCache and $stateProvider fix for native ios phonegap/cordova 【发布时间】:2016-02-19 15:28:38 【问题描述】:Angular $templateCache、$stateProvider 和 ng-include 在 Web 浏览器中运行良好,但在使用 phonegap/cordova 的原生 ios 上,它不会加载模板或进入状态
我已经检查了清单:
删除<base href="/">
确保路径是相对的“template.html”
与“/template.html”
确保 html5Mode 为 false
在 Angular 之前加载 templates.js
确保依赖注入到位
以下是一些在浏览器中有效但在本机 ios 上无效的示例。
$stateProvider.state('start',
url: '',
templateUrl: 'templates/start/start.html'
);
和
$state.go('start');
和
<div ng-include=" 'fileFromTemplatecache.html' "></div>
有什么想法吗?我找不到有效的解决方案。
【问题讨论】:
它应该可以正常工作,要么是你的路径有问题,要么是你的项目设置有问题。也许您的项目文件夹结构的屏幕截图会有所帮助 谢谢,@FranePoljak - 这是一个配置问题。我在下面添加了我的解决方案。 对于 iOS,您可以在 Safari -> Developer -> 选择设备/模拟器(您的应用运行的位置)-> Index.html 中检查错误,希望这有助于您更轻松地调试错误下次 【参考方案1】:我敢肯定,其他人会遇到这个问题。该解决方案与移动构建根目录中的 config.xml 文件有关。这对我有用...
<allow-navigation href="file://*/*"/>
<allow-navigation href="*"/>
<allow-intent href="file://*/*"/>
<allow-intent href="*"/>
<access origin="file://*/*"/>
<access origin="*"/>
【讨论】:
以上是关于angular里的$setTimeout和原生的setTimeout有啥区别么的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 的setTimeout 和Angular中的$timeout的區別