前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4-进军 angular1.x 控制器和过滤器

4-进军 angular1.x 控制器和过滤器

作者头像
西南_张家辉
发布2021-02-02 09:48:28
1.9K0
发布2021-02-02 09:48:28
举报
文章被收录于专栏:张家辉的树屋

4-控制器和过滤器

angular1.x 学习目录

基本

AngularJS 应用程序被控制器控制。

ng-controller 指令定义了应用程序控制器。

控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。

例子

代码语言:javascript
复制
<div ng-app="myApp" ng-controller="myCtrl">

名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{firstName + " " + lastName}}

div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
script>
复制代码

分析:

AngularJS 应用程序由 ng-app 定义。应用程序在

内运行。

ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

myCtrl 函数是一个 JavaScript 函数。

AngularJS 使用$scope 对象来调用控制器。

在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。

控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

控制器在作用域中创建了两个属性 (firstName 和 lastName)。

ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

方法

代码语言:javascript
复制
"myApp" ng-controller="personCtrl">

名: 

姓: 



姓名: {{fullName()}}





var app = angular.module('myApp', []);
app.controller('personCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
    $scope.fullName = function() {
        return $scope.firstName + " " + $scope.lastName;
    }
});

思考

  • 控制器是对应模块的指挥长,也是一个 JavaScript 对象,所以自带的 ng-controller ="myCtrl" , 这个 myCtrl 也是属于一个 JavaScript 对象
  • 控制器可以在一个 ng-app 下有多个,配合 $scope 来使用就类似 JavaScript 的作用域。

过滤器

angular 的过滤器用于装换数据,其实类似于 vue1.x 的过滤器。一样的功能。

过滤器

概述

currency

格式化数字为货币格式

filter

从数组项中选择一个子集

lowercase

格式化字符串为小写

orderBy

根据某个表达式排列数组

uppercase

根据某个表达式排列数组

  • 在表达式中加过滤器

uppercase

过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。

代码语言:javascript
复制
<div ng-app="myApp" ng-controller="personCtrl">

<p>姓名为 {{ lastName | uppercase }}p>

div>
复制代码

向指令添加过滤器 过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中。

orderby

  • orderBy 过滤器根据表达式排列数组:
  • 根据 country 的首字母排序出现,当然我们可以试试 name AngularJS 实例
代码语言:javascript
复制
<div ng-app="myApp" ng-controller="namesCtrl">

<ul>
  <li ng-repeat="x in names | orderBy:'country'">
    {{ x.name + ', ' + x.country }}
  li>
ul>

div>

复制代码

filter

  • 输入过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中,该过滤器后跟一个冒号和一个模型名称。

filter 过滤器从数组中选择一个子集:选择一个输入拥有其中字符的子集。

代码语言:javascript
复制
<div ng-app="myApp" ng-controller="namesCtrl">

<p><input type="text" ng-model="test">p>

<ul>
  <li ng-repeat="x in names | filter:test | orderBy:'country'">
    {{ (x.name | uppercase) + ', ' + x.country }}
  li>
ul>

div>
复制代码

自定义过滤器

  • 自定义一个翻转的字符 func
代码语言:javascript
复制
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.msg = "Runoob";
});
app.filter('reverse', function() { //可以注入依赖
    return function(text) {
        return text.split("").reverse().join("");
    }
});
复制代码

来总结下 过滤器的使用

一些常用的过滤器

1、uppercase,lowercase 大小写转换

代码语言:javascript
复制
{{ "lower cap string" | uppercase }}   // 结果:LOWER CAP STRING
{{ "TANK is GOOD" | lowercase }}      // 结果:tank is good

2、date 格式化

代码语言:javascript
复制
{{1490161945000 | date:"yyyy-MM-dd HH:mm:ss"}} // 2017-03-22 13:52:25

3、number 格式化(保留小数)

代码语言:javascript
复制
{{149016.1945000 | number:2}}

4、currency货币格式化

代码语言:javascript
复制
{{ 250 | currency }}            // 结果:$250.00
{{ 250 | currency:"RMB ¥ " }}  // 结果:RMB ¥ 250.00

5、filter查找

代码语言:javascript
复制
输入过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中,该过滤器后跟一个冒号和一个模型名称。

filter 过滤器从数组中选择一个子集

 // 查找name为iphone的行
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | filter:{'name':'iphone'} }}        

6、limitTo 截取

代码语言:javascript
复制
{{"1234567890" | limitTo :6}} // 从前面开始截取6位
{{"1234567890" | limitTo:-4}} // 从后面开始截取4位

7、orderBy 排序

代码语言:javascript
复制
 // 根id降序排
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | orderBy:'id':true }}

// 根据id升序排
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | orderBy:'id' }}

自定义过滤器 -- 多参数

  • 具体的操作就是在调用的时候用":参数" 的格式在后面追加即可
代码语言:javascript
复制
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
});
app.filter('myfilter', function() { //可以注入依赖
    return function(text) {
        var newArguments= Array.prototype.slice.call(arguments);
        return text+newArguments.join(',');
    }
});
复制代码
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • angular1.x 学习目录
  • 基本
  • 例子
  • 方法
  • 思考
  • 过滤器
    • uppercase
      • orderby
        • filter
          • 自定义过滤器
          • 来总结下 过滤器的使用
            • 一些常用的过滤器
              • 自定义过滤器 -- 多参数
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档