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>