1 展現任務列表 2 添加任務 3 刪除一條任務 4 修改任務 5 切換任務選中狀態(單個或批量) 6 清除已完成任務 7 顯示未完成任務數 8 顯示不一樣狀態的任務 以及當前任務高亮處理 9 根據URL變化顯示相應任務 11 使用服務抽象數據模型管理 12 使用路由完成不一樣任務的切換
#
$location
與 $scope
同樣,都須要經過注入的方式傳入URL是: file:///F:/Angular_File/todomvc/index.html#/completed 經過調用 $location.url() 方法獲取的是:'/completed'
| 過濾器名稱: 參數
|
指定,參數經過 :
指定track by
使用的時候,track by
要放在最後面<!-- 取出 completed 屬性爲:true 的數據 --> <p ng-repeat="item in data | filter:{completed: true} track by $index"></p> <script> app.controller('FilterController', ['$scope', '$filter', function($scope, $filter) { $scope.data = [ {name: '吃飯', completed: true }, {name: '睡覺', completed: false }, {name: '豆豆', completed: true } ]; }]); </script>
<p>{{12345678.333 | currency: "¥"}}</p>
<p>{{1412345678901 | date: "yyyy-MM-dd hh:mm:ss"}}</p>
:5
表示展現文字長度爲:5,:2
表示開始的索引號<p>{{'是誰在唱歌,溫暖了寂寞' | limitTo:5:2}}</p>
-
,例如:-age
ng-repeat
指令共同使用<p ng-repeat="item in data | orderBy: 'age'"></p>
$filter
方法,參數爲:過濾器名稱$filter
方法的返回值是一個方法:第一個參數表示要過濾的數據,後面的參數爲:過濾器的參數var time = $filter("date")($scope.curDate, "yyyy-MM-dd hh:mm:ss");
service
方法中的函數參數,是一個構造函數,經過this
添加成員app.service('TestService', [function() { // this.get = function() {}; // this.set = function() {}; // this.update = function() {}; // this.delete = function() {}; }]); // 在控制器中使用自定義服務 app.controller('DemoController', ['$scope', 'TestService', function($scope, TestService) { console.log(TestService); }]);
有三個模塊: 1 app.js:主模塊,應用程序的入口,實現統一調用全部其餘模塊 2 controller.js:控制器模塊,處理視圖中與用戶交互的功能,即:處理業務邏輯 3 service.js:服務模塊,抽象數據操做,提供數據的增刪改查 每一個模塊都會放在一個獨立的js文件中,所以,每一個文件都會有一個模塊, 即:angular.module("模塊名", []); 創建模塊之間的聯繫: 在 app.js 主模塊中,引入:controller 和 service這兩個模塊
app.config(['$routeProvider', function($routeProvider) {}])
npm install angular-route
單獨安裝ngRoute
-路由模塊名稱,做爲依賴模塊ngRoute
做爲依賴項引入config
方法來配置路由,並將$routeProvider
注入進來$routeProvider
的兩個方法:when()
和otherwise()
進行路由配置ng-view
展現路由對應的內容$locationProvider.hashPrefix('')
配合 #/users
使用<div ng-app="routeApp"> <a href="#/stu/li"></a> <p>a</p> <p>b</p> <div ng-view></div> <p>c</p> <p>d</p> </div> <script> var app = angular.module('routeApp', ['ngRoute']); app.config(['$routeProvider', function($routeProvider) { $routeProvider.when('/stu/li', { template: '<p>李四</p>' }); }]); </script>
參數:javascript
/stu/li
template
:指定路由的模板,顯示在ng-view
指令全部的html元素中html
templateUrl
: 做用與 template 相同,取值:模板id 或者 路徑controller
: 爲路由指定一個控制器,用於提供當前視圖中的數據模型app.config(['$routeProvider', function($routeProvider) { $routeProvider.when('/stu/li', { template: '<p>你好,我是{{name}}</p>', controller: 'stuController' }); }]); app.controller('stuController', ['$scope', function($scope) { $scope.name = '小明'; }]);
switch-case
中的 default
相似redirectTo
屬性:指定默認跳轉的錨點值$routeProvider .otherwise({ redirectTo: '/stu/' });
app.config(['$routeProvider', function($routeProvider) { // '/stu/:name?' 用來匹配:/stu/ 或 /stu 或 /stu/xxx 的任意一種 $routeProvider.when('/stu/:name?', { template: '<p>你好,我是{{name}}</p>', controller: 'stuController' }); }]); app.controller('stuController', ['$scope', '$routeParams', function($scope, $routeParams) { // $routeParams 是一個對象,對象中包含了一個 name 屬性。 // name屬性,是路由的 when 方法的第一個參數 console.log($routeParams.name); }]);
$route.updateParams()
方法:更新路由參數的值
$location.url('/teacher/laowang')
來修改,路由的URL值app.controller('stuController', ['$scope', '$routeProvider', '$route', function($scope, $routeProvider, $route) { console.log($routeProvider.name); // 參數是一個對象,具備路由參數屬性的對象 $route.updateParams({name: 'lisi'}); }]);
!
前綴<a href="#!/users"></a> <script> $routeProvider .when('/users', { templateUrl: 'view.html', controller: 'TestController' }) // 1.6以上,默認值爲:'!' // $locationProvider.hashPrefix('!'); </script>