
三、HTML页面最常用且实用的angular内置指令
①.ng-class(适用于类似点赞、关注等某个样式会因为某个操作改变的情况)
ng-class 指令用于给 HTML 元素动态绑定一个或多个 CSS 类。ng-class 指令的值可以是字符串,对象,或一个数组。
如果是字符串,多个类名使用空格分隔。
如果是对象,需要使用 key-value 对,key 是一个布尔值,value 为你想要添加的类名。只有在 key 为 true 时类才会被添加。
如果是数组,可以由字符串或对象组合组成,数组的元素可以是字符串或对象。
建议的两种使用方式:
一、字符串形式,代码如下:
<i class="icon" ng-class="{true:"ion-ios-heart",false:"ion-ios-heart-outline"}[AccountInfo.isFocus]" ng-click="wetherFocus()"></i>这样的意思就是,i标签有一个基础类为icon,ng-class则绑定了一个动态的类,而这个类要取哪一个值则由AccountInfo.isFocus的值是true或者false来决定,若其值为true则i标签会添加ion-ios-heart这个类,若其值为false则i标签会添加ion-ios-heart-outline<i class="icon" ng-class="{"ion-ios-heart":isIos,"ion-android-heart":isAndroid}"> </i>显然,由代码则可以看出,这样的含义就是当isIos为true的时候就会取ion-ios-heart这个类,当isAndroid的值为true的时候,就会取ion-android-heart这个类。<div class="keyboard"><span class="keyboardIcon" ng-click="toggleMenu()"></span></div><div class="footer-menu"><ul class="menu-list" ng-show="menuState">...</ul><div class="footer-send" ng-hide="menuState">...</div>设置一个布尔变量menuState(实际开发中你可以用表达式,三目运算式等等),当其为true的时候,ng-show的内容会显示,ng-hide的内容会隐藏。反之则反之。。。
<div ng-switch="essayType"><div class="list-cart" ng-switch-when="4">....</div><div class="list-cart left-pic" ng-switch-when="3">....</div><div class="single-pic" ng-switch-when="1">...</div><div class="single-pic" ng-switch-when="2">...</div><div class="single-pic" ng-switch-default>...</div></div>④.ng-model(这里主要说一下ng-model神奇的小坑坑)
<div class="WhatISay"><textarea name="my-massage-detail" ng-model="content" class="my-massage-detail" placeholder="请输入留言"></textarea><a class="button btn"ng-click="submitMes()">提交</a><br></div>按照定义,理论上来说我们提交的时候,直接在controller里面获取在页面定义了的ng-model的值,是可以的。但是实际上这样是不可行的。亲测发现输出了一个undefined,而且,如果在controller里面定义ng-model的初始值的话,获取到的就是初始值而不是改变后的最新值。
<div class="WhatISay"><textarea name="my-massage-detail" ng-model="model.content" class="my-massage-detail" placeholder="请输入留言"></textarea><a class="button btn"ng-click="submitMes()">提交</a></div>controller代码:
$scope.model = {};$scope.model.content = "";$scope.submitMes=function(){console.log($scope.model.content);}就是我们是定义了一个对象,然后把ng-model定义为这个对象里面的一个属性这样来处理的。这样子,我们就得到了ng-model的最新值了。//HTML代码<input type="text" ng-model="code"><button ng-click="setCode(code)">Login</button><br>//controller代码$scope.setCode = function(code){alert(code);}四、数据交互实用技巧get: function (url, options) { <br> var deferred = $q.defer(); <br> showTip();$http.get(url, options).success(function (data) {hideTip();if (data.Success) {deferred.resolve(data);} else {deferred.reject(data.Message);}}).error(function (data) {hideTip();deferred.reject(data);});return deferred.promise;}//controller里面的调用get("url",params).then(function (data) {//这里是successCallback},function (data) {//这里是errorCallback}); 这样,我们就可以在每个请求发出时统一定义一些提示,然后请求结束之后隐藏这些提示。这段代码中,大概意思就是,当请求成功的时候,就会调用deferred.resolve(data),把状态设置为成功,这样就会自动执行then里面的第一个函数即successCallback,并把请求到的数据data传递进去。而当请求失败的时候,则会调用第二个函数,即errorCallback。