ui-router路由
【ionic+angularjs】angularjs ui-router路由简介($urlRouter、$state、$stateProvider、ui-sref….)
reloadOnSearch
1 | /* @param {boolean=} [stateConfig.reloadOnSearch=true] |
补充:像上面列子情况无论reloadOnSearch是true还是false都没有影响,因为路由没有定义参数 index, index的变化不会触发路由刷新
$stateProvider的when和otherwise写法
1 | const stateResolve = function(stateName) { |
参考:https://github.com/angular-ui/ui-router/issues/1699#issuecomment-144310960
路由跳转前做异步操作
angular-ui-router === v0.3.1
注意这里如果url中存在未定义的参数,$state.go会丢失这些参数
1 | const cancelStateChangeStart = $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { |
参考:https://github.com/angular-ui/ui-router/issues/1699#issuecomment-111457570(需要注意浏览器返回键的影响,这里如果只是第一次进入的判断即可使用,作为第一次进入的判断,为了防止影响,这里只运行一次后取消事件监听)
问题:上述方案需要路由参数全部有定义,如果没有定义的参数会在$state.go的时候丢失。如果不希望如此的话除了通过路由的resolve阻止想不到其他方法了(路由resolve使用的话需要提前设计好路由,否则可能要添加好几个resolve)
**页面缓存及动态刷新解决方案 **
不缓存可以使用下面方式设置
1 | // 路由跳转的时候强制reload(会导致所有路由缓存失效,慎用) |
动态刷新
1 | $scope.$on('$ionicView.enter', function() { |
$cacheFactory服务
https://www.shuzhiduo.com/A/mo5kg26L5w/
$q 服务
$q.catch() method fails in IE8
1 | promise.then(function(response) { |
$q增加allSettled方法
1 | app.run(['$q', function ($q) { |
$q中的错误捕获
通过下面列子得出结论:
1. $q的同步错误try catch可以捕获(Promise是catch捕获,差异的地方,需要一致建议利用then可以被捕获的方式来模拟,如直接 $q.resolve().then().catch() )
2. $q的异步错误无法捕获(Promise一样)
3. $q.then里面的错误$q.catch可以捕获(Promise一样)
4. $q.catch和$q.finally里面的错误无法捕获(Promise一样)
5. $q.finally里面的错误有个很大的问题就是无法打印出来,会被隐藏(具体原因可以见源码实现,因为finally里面的handleCallback没有exceptionHandler(e),这时候要可以输出错误需要在finally的最后再加一个catch或者整体用try catch包裹起来,如直接 $q.resolve().finally().catch() )
因此异步代码和catch finnally都需要使用try catch来包裹
如果希望$q和Promise完全一致,需要$q用Promise的写法,并且修改angularjs源码,给resolveFn执行的时候try catch处理下
综上所述,对于异常出错的情况考虑在内的话,最好用下面的写法
$q.resolve().then().finally().catch()
1 | // const Q = angular.injector(['ng']).get('$q') |
$translate
"commisionMessage": "BLA {{fee}} BLA BLA"
传参:
1 | {{'commisionMessage' | translate : {fee:fee} }}| |
$compile
在 AngularJS 中动态编译 HTML 片段时如何绑定(bind)事件处理程序
https://www.coder.work/article/6027202
“计算属性”
1 |
|
问题
Old values in $watchGroup’s callback is not correct
本文链接: http://www.ionluo.cn/blog/posts/cce553db.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!