angular遇到問題的處理

1.angular js的遍歷

在傳遞數(shù)據(jù)的時候,經(jīng)常會用到對數(shù)據(jù)的處理,尤其是數(shù)據(jù)的遍歷
** angular.foreach**

var objs =[{a:”a1”},{a:”a2”}];
 
 angular.forEach(objs, function(data,index,array){
 
 //data等價于array[index]
 
 console.log(data.a+'='+array[index].a);
 
});

objs:需要遍歷的集合
data:遍歷時當(dāng)前的數(shù)據(jù) (值) //a1,a2……
index:遍歷時當(dāng)前索引 //1,2,3……
array:需要遍歷的集合,每次遍歷時都會把objs原樣的傳一次,也可以不用寫后面兩個參數(shù)。

2.angular js的判斷

在html頁面中,有時候需要根據(jù)條件展示數(shù)據(jù)。
** ng-if讓數(shù)據(jù)的展示可以依賴于某個條件**

<a href="javascript:;" class="margin-r10" ng-click="goOff(row)" ng-if='row.status=="展示中"'> 下線</a>

<a href="javascript:;" class="margin-r10" ng-click="goOn(row)" ng-if='row.status=="未上線"'> 上線</a>

3.過濾器

接收輸入數(shù)據(jù),通過過濾器按照某個規(guī)則處理后返回結(jié)果
可以在模版中使用,也可以在控制器中應(yīng)用
模版中 {{要表示的表達(dá)式|過濾器名稱[:參數(shù)]}}
控制器中通過依賴注入 $filter

內(nèi)置過濾器
1 .date(日期格式化) var dateFilter=$filter(‘date’);----------比較常用
dateFilter(date, 'yyyy-MM-dd HH:mm:ss')
第一個參數(shù)表示要格式化的對象,第二個參數(shù)表示格式化的格式

自定義過濾器
寫一個 filter方法

app.filter(‘過濾器名’,function(){
  return function(輸入的參數(shù)){  //閉包
 
  /*函數(shù)體*/ 
  return  返回結(jié)果
  }
})

4.全局變量

  1. 通過var 直接定義global variable,這跟純js是一樣的。
  2. 用angularjs value來設(shè)置全局變量 。
  3. 用angularjs constant來設(shè)置全局變量

5.ng-repeat 報錯問題

控制臺報錯以下:
[ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys

發(fā)現(xiàn)是因?yàn)橄嗤膬?nèi)容重復(fù)引起,解決方案:
在ng-repeat后面加上 track by $index
ng-repeat="word in words track by $index"
**$index **是循環(huán)的時候,元素的下標(biāo),從0 開始

6.$http服務(wù)

$http服務(wù)是接受一個對象參數(shù)的函數(shù),這個對象包含的是一些生成HTTP請求的配置,返回一個promise對象,具有success和error兩個函數(shù),可以通過鏈?zhǔn)秸{(diào)用。
$http 參數(shù)是一個對象,包括有:url: , method: ,params: 這個鍵的值是一個字符串map或?qū)ο螅瑫晦D(zhuǎn)換成查詢字符串追加在URL后面 ( 發(fā)送GET請求時使用), data: 發(fā)送給服務(wù)器的數(shù)據(jù) (發(fā)送POST請求時使用) ,

返回的是一個promise對象,
1.success和error函數(shù)

      $http({
            url: " url.json",
           method:"GET"
            }).success(function(){  
             //響應(yīng)成功
           }).error(function(){             //響應(yīng)失敗 
            })

2.通過then方法處理,參數(shù)是兩個函數(shù)

         $http({
              url: " url.json",
              method:"GET"
            }).then(function(){
               //響應(yīng)成功
             },function(){
              //響應(yīng)失敗 
           })

7.ng-options的參數(shù)情況

例:javascript

$scope.School = [
{
            "id": 27,
            "name": "北京大學(xué)",
            "status": 0,
   "city":"北京"
        },
        {
            "id": 29,
            "name": "北京交通大學(xué)",
            "status": 0,
   "city":"北京"
        },
        {
            "id": 1,
            "name": "哈爾濱工業(yè)大學(xué)(威海)",
            "status": 0,
   "city":"哈爾濱"
        },
        {
            "id": 10,
            "name": "哈爾濱工業(yè)大學(xué)",
            "status": 0,
   "city":"哈爾濱"
        },
        {
            "id": 11,
            "name": "哈爾濱工程大學(xué)",
            "status": 0,
   "city":"哈爾濱"
        }
    ]

html
<1> 基本下拉菜單 label for value in array

<select ng-model="Select1" ng-options="s.name for s in School">
 <option value="">-- 請選擇 --</option>
</select>

這里表達(dá)式中的value即這里是m 代表的是在School數(shù)組中每次取出一個元素
label即這里的s.name 就是輸出的顯示結(jié)果

<2>自定義下拉菜單 label for value in array

<select ng-model="Select2" ng-options="(s.id+'-'+s.name) for s in School">
 <option value="">-- 請選擇 --</option>
</select>

這里表達(dá)式中的value即這里是m 代表的是在School數(shù)組中每次取出一個元素
label即這里的 (s.id+'-'+s.name) 就是輸出的顯示結(jié)果(可自定義輸出樣式)

< 3>群組下拉菜單 label group by group for value in array

<select ng-model="Select3" ng-options="(s.id + ' - ' + s.name) group by s.city for s in School">
 <option value="">-- 請選擇 --</option>
</select>

顯示結(jié)果如下:
表達(dá)式的by group即這里的 s.city 代表 用這個屬性作為條件來篩選群組

<4>自定 select 的 ngModel 的值 select as label for value in array

<select ng-model="Select4" ng-options="s.id as s.name for s in School">
<option value="">-- 請選擇 --</option>
</select>

select as label: label代表的是顯示的值,而select指的是當(dāng)前返回值
如果當(dāng)前選中的是“北京大學(xué)”, $scope.Select4=27

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設(shè)計(jì)動態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,646評論 0 3
  • 這個只是Markdown入門啦,后面還有好多要學(xué)的,是標(biāo)記語言的一種。 分割線 來玩玩分割線 哦,這個 好玩 代碼...
    Silly_N_Fool閱讀 209評論 0 0
  • 補(bǔ)心清肺、止熱嗽,治喉病。 百沸湯中食,清肺火,解陽明結(jié)熱。 中國民間有立夏食用鴨蛋補(bǔ)夏的習(xí)俗,立夏這天,家里的長...
    一只好coffee閱讀 496評論 2 8
  • 1、- (void)applicationWillResignActive:(UIApplication *)ap...
    信仰支撐我不會痛閱讀 4,194評論 0 10