表达式在AngularJS应用中广泛的使用,因此深入理解AngularJS如何使用并运算表达式是非常重要的。

 
表达式和eval非常相似,但是由于表达式由AngularJS来处理,它们有已下显著不同的特性:
第一:所有的表达式都在其属的作用域北部执行,并有访问本地$scope的权限;
第二:如果表达式发生了TypeError和ReferenceError并不会抛出异常;
第三:不允许使用任何流程控制功能(条件控制,例如If/esle);
第四: 可以接受过滤器和过滤器链;
 
关于解析表达式:AngularJS通过$parse[解析]这个内部服务来进行表达式的解析,这个服务能够访问当前所处的作用域。
这个过程允许我们访问定义在$scope上的原始JavaScript数据和函数。
 
// HTML
<div ng-controller="MyController">
    <input ng-model="expr"
            type="text"
            placeholder="Enter an expression" />
    <div>{{ parsedExpr }}</div>
  </div>
 
// SCRIPT
angular.module('myApp', [])
    .controller('MyController',
    ['$scope', '$parse', function($scope, $parse) {
 
      $scope.person = {
        name: "Ari Lerner"
      };
 
      $scope.$watch('expr', function(newVal, oldVal, scope) {
        if (newVal !== oldVal) {
          // 让我们建立parseFun表达式
          var parseFun = $parse(newVal);
          // 获取记过解析后的表达式的值,放在scope里,output出来
          scope.parsedExpr = parseFun(scope);
        }
      });
    }]);
 
插入字符串:
 在AngularJS中,我们的确有手动运行模板编辑的能力。例如:差值允许基于作用域上的某个条件实时更新文本字符串。
要在字符串模板中做插值操作,需要在你的对象中注入$interpolate服务。
angular.module('myApp', [])
    .controller('Mycontroller', function($scope, $interpolate) {
        //我们同事拥有了两个内置服务的权限
    });
 
$interpolate【有三个参数】服务返回一个函数,用来在特定的上下文中运算表达式。

 
//HTML
<div ng-controller="TestController">
  <input ng-model="to" type="email" placeholder="Recipient">
  <textarea ng-model="emailBody"></textarea>
  <pre>{{ previewText }}</pre>
</div>
 
//其实这里面我测试后我有一点不是很理解,为何插值没有实现previewText 还是会有更新,看脚本表面的意思应该只是把插值放进来才对的哦!
 
//SCRIPT
angular.module('myApp', [])
  .controller('TestController', function($scope, $interpolate) {
    $scope.$watch('emailBody', function(body) {
      if (body) {
        var template = $interpolate(body);
        $scope.previewText = template({to: $scope.to});
      }
    });
  });

AngularJS入门基础——表达式的更多相关文章

  1. AngularJS入门基础PPT(附下载链接)

    学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...

  2. AngularJS入门基础——作用域

    作用域$scope是构成AngularJS应用的核心基础,在整个框架中都被广泛使用,因此了解它是非常重要的. $scope对像是定义应用业务逻辑,控制器方法和视图属性的地方.作用域是视图和控制器之间的 ...

  3. AngularJS入门基础——控制器

    AngularJS中的控制器是一个函数,用来向视图的作用域添加额外的功能.我们用它来给作用域对象设置初始状态,并添加自定义行为. AngularJS同其他JavaScript框架最主要的一个区别就是, ...

  4. angularjs入门基础一

    app.controller('firstController',function($scope,$rootScope){ $scope.name='张三'; $rootScope.age='30'; ...

  5. AngularJS入门基础——$provide.decorator 实例讲解

    <body ng-controller="OneController"> <script>  var Foobar = function() {      ...

  6. AngularJS入门基础——表单验证

    <form name="form" novalidata>   <label name="email">your email</l ...

  7. AngularJS入门基础——过滤器

    在HTML中的模板绑定符号{{ }}内通过 | 符号来调用过滤器 {{ name | uppercase }}   以HTML的形式使用过滤器时,如果需要传递参数给过滤器,只要在过滤器名字后面加冒号即 ...

  8. Java入门基础(变量、操作符与表达式)

    Java入门基础 1. 第一个程序 2.变量(命名.运算.整数/小数/字符串.布尔类型) 3.操作符与表达式(算术/逻辑/关系/赋值/自增/类型转换操作符) HelloWorld! public cl ...

  9. AngularJS实用基础知识---入门必备

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. ...

随机推荐

  1. IDEA2018.1安装配置文档

    一.软件安装 1. 下载地址: https://www.jetbrains.com/idea/download/#section=windows 2. 安装: 点击.exe,选择安装路径,点击next ...

  2. Airmon-ng抓包&破解wifi

    安装  aircrack获取(aircrack源) sudo apt-get install aircrack-ng 配置 安装组件 sudo apt-get install build-essent ...

  3. DevOps on AWS之Cloudformation概念介绍篇

    Cloudformation的相关概念 AWS cloudformation是一项典型的(IAC)基础架构即代码服务..通过编写模板对亚马逊云服务的资源进行调用和编排.借助cloudformation ...

  4. 《Linux内核分析》第三周学习报告

    <Linux内核分析>第三周学习报告                                    ——构造一个简单的Linux系统MenuOS 姓名:王玮怡  学号:201351 ...

  5. 小学四则运算APP 第一个冲刺阶段 第一天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 思考:初步了解小学四则运算数是在100以内的加减乘除,首先先从简单的地方入手,把最基础的算法功 ...

  6. Daily Scrum - 11/26

    Meeting Minutes 今天是Sprint 3第一天,任烁向我们交代了他那边的代码情况,他这两天回学校有点事,人千和章玮暂时先熟悉一下他写的那部分,正在试图将代码merge起来.重阳实现了进度 ...

  7. Daily Scrum - 11/23

    今天更新blog时发现了老师对我们daily scrum提的要求,从明天起除了简要记录组会的主要内容之外,还会总结上一个工作日每个组员的工作进度.代码提交情况和燃尽图. 今天会议内容主要是人千.章玮同 ...

  8. (Alpha)Let's-展示博客

    Let's Alpha 项目答辩 ·选题由来     手机端——用户相对较多,使用环境限制相对宽松     手机游戏?校园p2p应用?线下交流!(滴滴打水?)     模式的选择:发起——加入活动   ...

  9. VS2013新建web项目时出错,系统找不到指定文件

    好不容易找了一个VS2013_RTM_ULT_CHS来安装好,Key:BWG7X-J98B3-W34RT-33B3R-JVYW9 兴高采烈的打开vs2013,新建web项目,结果弹出一个错误: 傻眼了 ...

  10. [转帖]Mysql 最简单的参数调优配置

    http://blog.jobbole.com/113659/ 我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压 ...