angular移动开发那些事

前端之家收集整理的这篇文章主要介绍了angular移动开发那些事前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一开始叫我使用angular开发移动端页面的时候我是拒绝的,且不说性能问题吧,主要是姐不会angular啊。移动端的开发我更倾向于vue。

移动端touch问题

angular官方提供了一个touch模块angular-touch。首先,下载依赖包:

  • Google CDN e.g.

"//ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-touch.js"
  • NPM e.g.

npm install --save angular-touch@X.Y.Z
或者: yarn add angular-touch@X.Y.Z
  • Bower e.g.

bower install angular-touch#X.Y.Z
  • code.angularjs.org e.g.

"//code.angularjs.org/X.Y.Z/angular-touch.js"

然后在html文件中引入依赖

<script src="path/to/angular.js"></script>
<script src="path/to/angular-touch.js"></script>

模块注册

angular.module('app',['ngTouch']);

如此,ngClick指令在触摸屏上的点击事件就不会在有300ms的延迟了。此外,ngTouch模块还提供ngSwipeLeft左划和ngSwipeRight右划指令。详细情况可以看文档

有的同学可能习惯了touchstart/touchend/touchmove,在这里推荐一个插件ngTouch

首先下载依赖
使用bower下载:

bower install ngtouch --save

使用npm下载

npm install ngtouch --save

然后再html文件中引入依赖

<script type="text/javascript" src="path/to/components/ngtouch/build/ngTouch.min.js"></script>

模块注入

var app = angular.module("demoapp",["ngTouch"]);

使用情况如下

<div ng-touchmove="someFunction()" ng-touchstart="someFunction()" ng-touchend="someFunction()"></div>

swiper轮播

angular的轮播图我用的插件angular-swiper, 这里遇到了一个坑,就是ksSwiper模块执行时数据还没有请求回来,结果无法滑动。可以使用ng-if判断数据的长度,当长度大于0时再调用

ks-swiper-container(initial-slide="0" loop="true" show-nav-buttons="false" slides-per-view="1" space-between="5" pagination-clickable="false" ng-if="self.master.ofList.length>0")

ng-repeat不能有重复的值

这个问题是做轮播图的时候遇到的,当ng-repeat绑定的数组有重复的值时会报错“ngRepeat:dupes”,所以要注意数组去重。

监听数组变化

angular的$swatch在监听数组的变化时,需要传入一个true参数,否则监听不到变化。如:

$scope.$watch("yourValue",function(newValue,oldValue,scope) {},true);

绑定了ng-click的元素,使用原生的js触发click出错

比如绑定了ng-click的元素,再用document.getElementById('myid').click()触发click事件,会报错。这个问题很奇怪,理论上不该呀,难道是我自己的问题?哪位大神如果看到的还请指教一下

ng-repeat内使用ng-if指令,参数$index会无效

比如

li.clearfix(ng-repeat="item in self.items")
    div(ng-if="self.isShow")
        div(ng-click="self.clickHandler($index)")

这里的$index传的值并不是我们想要的下标。解决方法:可以改成ng-show或者使用一个变量记录下标

目前遇到的问题暂时先这样了,后面会持续更新。时间穷忙,能力也有限,写得不对的地方还请见谅~

猜你在找的Angularjs相关文章