最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angularjs結(jié)合Bootstrap制作的一個(gè)TODO List

 更新時(shí)間:2016年08月18日 09:25:16   作者:Marksinoberg  
這篇文章主要介紹了Angularjs結(jié)合Bootstrap制作的一個(gè)TODO List 的相關(guān)資料,感興趣的小伙伴們可以參考一下

看了一個(gè)關(guān)于Angularjs的視頻,視頻內(nèi)容講解的是如何制作一款TODO list形式的SPA(Simple Page Application,單頁(yè)面應(yīng)用)。為了增強(qiáng)理解,下面寫(xiě)了一篇文章,用以復(fù)習(xí)鞏固。

準(zhǔn)備

Angularjs下載

說(shuō)是下載,其實(shí)只要能在我們的頁(yè)面中引用到Angularjs即可??梢杂腥缦路绞健?/p>

CDN加速

使用國(guó)內(nèi)的CDN加速服務(wù)也是可以的。

復(fù)制代碼 代碼如下:
<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

npm 方式

使用Nodejs的包管理工具也挺方便的,基本上來(lái)說(shuō)兩步就搞定了。
首先進(jìn)入到我們將要寫(xiě)代碼的文件夾。
 •安裝Angularjs:npm install angular
 •頁(yè)面上引入使用:

<!-- 這個(gè)src地址視自己的情況而定-->
<script src="node_modules/angular/angular.js"></script>

常規(guī)方式

常規(guī)方式就是我們手動(dòng)的下載相關(guān)的文件,然后手動(dòng)的引入,由于比較繁瑣。這里不再過(guò)多的敘述。

Bootstrap下載

作為一款很流行的現(xiàn)代化的前端框架,Bootstrap可謂是風(fēng)頭盡出了。下載地址

知識(shí)儲(chǔ)備

MVC 架構(gòu)

Angularjs 核心采用MVC架構(gòu),事件驅(qū)動(dòng)應(yīng)用。我也是剛接觸,所以理解的也不是很到位。有錯(cuò)誤的話,還望博友指出來(lái)。

ng-app

其作為整個(gè)單頁(yè)面的大管家,app 即application,應(yīng)用的意思。我們的單頁(yè)面的服務(wù)就充當(dāng)了這么一個(gè)app的作用。

一般來(lái)說(shuō),ng-app 要作為ng-controller的父容器來(lái)嵌套。否則可能不會(huì)出現(xiàn)預(yù)期的結(jié)果 

ng-controller

控制器,頁(yè)面上應(yīng)用的左膀右臂,控制器的存在簡(jiǎn)化了模塊之間的耦合性,使得代碼編寫(xiě)的更加規(guī)范和簡(jiǎn)單。

ng-model

模型處理,一般會(huì)和頁(yè)面元素進(jìn)行綁定輸出,實(shí)現(xiàn)無(wú)刷新的頁(yè)面效果。

事件基礎(chǔ)

ng-click

在我們的單頁(yè)面應(yīng)用中,聲明了此屬性的元素就具備了點(diǎn)擊事件的功能。至于調(diào)用的是那一部分的函數(shù),其實(shí)是和該元素所在的容器內(nèi)相關(guān)的。

也就是說(shuō),點(diǎn)擊事件對(duì)應(yīng)的函數(shù)是書(shū)寫(xiě)在相關(guān)控制器里面的用于完成特定的功能的代碼。

完整代碼

下面 貼出來(lái)本例詳細(xì)的代碼

main.js

(function(window){
 // 注冊(cè)一個(gè)應(yīng)用程序主模塊
 var todoapp = window.angular.module('todoapp',[]);
 // 注冊(cè)控制器
 // window.angular.module('todoapp')
 todoapp.controller('maincontroller'
  ,['$scope',function($scope){
   // $scope 作用就是往視圖中添加元素
   // 文本框中的數(shù)值
   $scope.text = ''; // 會(huì)使用雙向綁定的數(shù)據(jù)類(lèi)型

   // 為方便頁(yè)面展示,手動(dòng)添加一串列表
   $scope.todolist = [{
    text:'Angularjs',
    done:false
   },{
    text:'Bootstrap',
    done:false
   }];

   // 添加函數(shù),響應(yīng)交互
   $scope.add = function(){
    var text = $scope.text.trim();
    if(text) {
     $scope.todolist.push({
      text:text,
      done:false
     });
     $scope.text = '';
    }
   }

   // 點(diǎn)擊刪除按鈕的響應(yīng)事件
   $scope.delete = function(todo){
    var index = $scope.todolist.indexOf(todo)
    $scope.todolist.splice(index,1);// 起刪除的作用
   }


   // 獲取已完成的事件的個(gè)數(shù),按照checkbox的選擇與否實(shí)現(xiàn)
   // 由于頁(yè)面是動(dòng)態(tài)變化的,所以要使用函數(shù),或者干脆使用模型綁定,但是那樣的話會(huì)稍微麻煩一點(diǎn)
   $scope.doneCount = function(){
    // 使用filter來(lái)實(shí)現(xiàn)
    var temp = $scope.todolist.filter(function(item){
     return item.done;// 返回true表示當(dāng)前的數(shù)據(jù)滿足條件,事件已完成
    });
    return temp.length;
   }
 }]);

})(window)

todolist.html

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Angularjs 整合Bootstrap實(shí)現(xiàn)任務(wù)清單</title>
 <!-- 引入 Bootstrap -->
 <link  rel="stylesheet">
 <style>
  .container {
   max-width: 720px;
  }
  .done {
   color: #cca;
  }
  .checkbox {
   margin-right: 12px;
   margin-bottom: 0;
  }
  .done > .checkbox > label > span {
   text-decoration: line-through;
  }
 </style>
 <script src="node_modules/angular/angular.js"></script>
 <script src="myjs/app.js"></script>
</head>
<body >
 <div class="container" ng-app="todoapp">
  <header>
   <h1 class="display-3">TODO LIST</h1>
   <hr></header>
  <!-- 內(nèi)容部分-->
  <section ng-controller="maincontroller">
   <!--為了實(shí)現(xiàn)好看的界面,所以用了表單控制-->
   <form class="input-group input-group-lg">
    <input type="text" class="form-control" ng-model="text" name="">
    <span class="input-group-btn">
     <button class="btn btn-secondary" ng-click="add()">Add</button>
    </span>
   </form>
   <ul class="list-group" style="padding:12px;">
    <li class="list-group-item" ng-class="{'done':item.done}" ng-repeat="item in todolist" >
    <button type="button" class="close" aria-label="close" ng-click="delete(item)">
     <span aria-hidden="true">&times;</span>
     <span class="sr-only">Close</span>
    </button>
     <div class="checkbox">
      <label>
       <input type="checkbox" ng-model="item.done">
       <span>{{item.text }}</span>
      </label>
     </div>
    </li>
   </ul>
   <p>
    總共 <strong>{{todolist.length }}</strong>
    個(gè)任務(wù),已完成 <strong>{{doneCount()}}</strong>
    個(gè)
   </p>
  </section>
 </div>

</body>
</html>

頁(yè)面效果

代碼詳解

代碼中最外邊包裹的一層代碼可以很好的起到臨時(shí)空間的效果,防止命名空間的污染。

(function(window){
 // to do something
})(window)

注意最后面的(window)不可缺少。 

創(chuàng)建應(yīng)用

// 注冊(cè)一個(gè)應(yīng)用程序主模塊
var todoapp = window.angular.module('todoapp',[]);

創(chuàng)建控制器

todoapp.controller('maincontroller'
 // 這里的$scope也就起到了容器的作用,聲明了變量的可見(jiàn)范圍。
  ,['$scope',function($scope){
   // $scope 作用就是往視圖中添加元素
   // 文本框中的數(shù)值
   $scope.text = ''; // 會(huì)使用雙向綁定的數(shù)據(jù)類(lèi)型

   // 為方便頁(yè)面展示,手動(dòng)添加一串列表
   $scope.todolist = [{
    text:'Angularjs',
    done:false
   },{
    text:'Bootstrap',
    done:false
   }];


 }]);

完善功能函數(shù)

// 添加函數(shù),響應(yīng)交互
   $scope.add = function(){
    var text = $scope.text.trim();
    if(text) {
     $scope.todolist.push({
      text:text,
      done:false
     });
     $scope.text = '';
    }
   }

   // 點(diǎn)擊刪除按鈕的響應(yīng)事件
   $scope.delete = function(todo){
    var index = $scope.todolist.indexOf(todo)
    $scope.todolist.splice(index,1);// 起刪除的作用
   }


   // 獲取已完成的事件的個(gè)數(shù),按照checkbox的選擇與否實(shí)現(xiàn)
   // 由于頁(yè)面是動(dòng)態(tài)變化的,所以要使用函數(shù),或者干脆使用模型綁定,但是那樣的話會(huì)稍微麻煩一點(diǎn)
   $scope.doneCount = function(){
    // 使用filter來(lái)實(shí)現(xiàn)
    var temp = $scope.todolist.filter(function(item){
     return item.done;// 返回true表示當(dāng)前的數(shù)據(jù)滿足條件,事件已完成
    });
    return temp.length;
   }

總結(jié)

代碼不多,思想很深邃。

如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附3個(gè)精彩的專(zhuān)題:

Bootstrap學(xué)習(xí)教程

Bootstrap實(shí)戰(zhàn)教程

Bootstrap插件使用教程

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 鼠標(biāo)移到div,浮層顯示明細(xì),彈出層與div的上邊距左邊距重合(示例代碼)

    鼠標(biāo)移到div,浮層顯示明細(xì),彈出層與div的上邊距左邊距重合(示例代碼)

    這篇文章主要介紹了鼠標(biāo)移到div,浮層顯示明細(xì),彈出層與div的上邊距左邊距重合的實(shí)例代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • JS實(shí)現(xiàn)萬(wàn)億數(shù)字轉(zhuǎn)中文的代碼詳解

    JS實(shí)現(xiàn)萬(wàn)億數(shù)字轉(zhuǎn)中文的代碼詳解

    在軟件開(kāi)發(fā)中,尤其是在中文處理的場(chǎng)景中,數(shù)字與語(yǔ)言的轉(zhuǎn)換是一個(gè)常見(jiàn)且具有挑戰(zhàn)性的任務(wù),在一些業(yè)務(wù)系統(tǒng)中,可能需要將阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字,本文將介紹如何使用 JavaScript 將數(shù)字轉(zhuǎn)換成中文,幫助開(kāi)發(fā)者為相關(guān)的需求提供實(shí)現(xiàn)思路,需要的朋友可以參考下
    2024-12-12
  • 解決JS浮點(diǎn)數(shù)運(yùn)算出現(xiàn)Bug的方法

    解決JS浮點(diǎn)數(shù)運(yùn)算出現(xiàn)Bug的方法

    解決JS浮點(diǎn)數(shù)運(yùn)算出現(xiàn)Bug的方法,需要的朋友可以參考一下
    2013-03-03
  • JavaScript實(shí)現(xiàn)左側(cè)菜單效果

    JavaScript實(shí)現(xiàn)左側(cè)菜單效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)左側(cè)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于js實(shí)現(xiàn)投票的實(shí)例代碼

    基于js實(shí)現(xiàn)投票的實(shí)例代碼

    這篇文章主要介紹了基于js實(shí)現(xiàn)投票的實(shí)例代碼,三種投票表現(xiàn)效果,個(gè)人比較喜歡柱狀投票圖,具有立體感,感興趣的朋友可以參考下
    2015-08-08
  • NestJS使用class-validator進(jìn)行數(shù)據(jù)驗(yàn)證

    NestJS使用class-validator進(jìn)行數(shù)據(jù)驗(yàn)證

    本文將通過(guò)詳細(xì)的步驟和實(shí)戰(zhàn)技巧,帶大家掌握如何在NestJS中使用class-validator進(jìn)行數(shù)據(jù)驗(yàn)證,以及11條實(shí)戰(zhàn)中常用的驗(yàn)證技巧,感興趣的可以了解下
    2024-11-11
  • 嘗試在讓script的type屬性等于text/html

    嘗試在讓script的type屬性等于text/html

    我們可以在script片斷中定義一個(gè)被JS調(diào)用的代碼,但代碼又不在頁(yè)面上顯示,這時(shí),我們可以使用下面的方法;當(dāng)script中的type等于text/html時(shí)我們可以做些什么呢?感興趣的朋友可以了解下啊
    2013-01-01
  • 解決JS外部文件中文注釋出現(xiàn)亂碼問(wèn)題

    解決JS外部文件中文注釋出現(xiàn)亂碼問(wèn)題

    中文亂碼在Java Web開(kāi)發(fā)中經(jīng)常出現(xiàn),這是由于不同的部分編碼不一樣造成的,一般在開(kāi)發(fā)中,我們把所有能設(shè)編碼的地方,全部設(shè)置成UTF-8,但是有時(shí)候還是會(huì)出現(xiàn)亂碼的情況。下面通過(guò)本文給大家分享JS外部文件中文注釋出現(xiàn)亂碼的解決方案,一起看看吧
    2017-07-07
  • javascript模擬的Ping效果代碼 (Web Ping)

    javascript模擬的Ping效果代碼 (Web Ping)

    JS雖然發(fā)送不了真正Ping的ICMP數(shù)據(jù)包,但Ping的本質(zhì)仍然是請(qǐng)求/回復(fù)的時(shí)間差,HTTP自然可以實(shí)現(xiàn)此功能.
    2011-03-03
  • 原生JS實(shí)現(xiàn)留言板

    原生JS實(shí)現(xiàn)留言板

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)留言板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論

西丰县| 万全县| 泰安市| 百色市| 安宁市| 兰西县| 穆棱市| 乐山市| 南昌市| 德格县| 山阴县| 土默特右旗| 昌都县| 邯郸县| 黄浦区| 湖南省| 岐山县| 墨竹工卡县| 当涂县| 宁乡县| 福州市| 肇庆市| 沁水县| 高雄市| 江川县| 靖安县| 镇雄县| 阿拉善左旗| 阜南县| 梧州市| 军事| 清苑县| 渭南市| 原平市| 磴口县| 黄大仙区| 卫辉市| 永德县| 通城县| 武义县| 泾川县|