表达式在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. 第二个spring冲刺第8天

    今天我们团队分别安排了不同的任务,分别是1人程序编写,1人检查bug,1人负责客户体验,还有我们的总负责人王俊凯同学负责各个部分的协调.今天程序有了新的调整,但是功能还是没有完全做出来,不过还在开发途 ...

  2. 第三周(JAVA编写的 wordcount)

    import java.io.*; public class WordCount { public static int words=1; public static int lines=1; pub ...

  3. 【python】自学笔记

    参考文献 1.环境安装 1.1 python 工作环境 2.7.14 1.2 pycharm community2018.1.1 4 x64 2.第一行代码 2.1 python交互模式, >& ...

  4. 这两天学到的简单Linux的命令

    1. 定时执行命令查看命令的接口 watch -n kubectl get pods -n kube-ops 每十秒钟查看一下命令运行接口 2. 后台方式运行 jenkins 当前窗口关闭不影响执行结 ...

  5. send和sendmsg性能测试

    1,摘要:测试send和sendmsg的性能,影响这两个函数性能主要有发送的字节大小,增加循环次数,从100到10000000(千万)2,基本信息cat /proc/cpuinfo查看CPU信息,如下 ...

  6. MySQL : 数据库和表的基本操作总结

    针对database和table的操作大致可分为三类:创建,查询,修改,删除 1. 创建 create ①创建数据库 create database db_name; ②创建表 create tabl ...

  7. 动态sql中的条件判断取值来源于map 或者 model

  8. 一本通1645Fibonacci

    1645:Fibonacci 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:POJ 3070 我们知道斐波那契数列 F0=0,F1=1,Fn=Fn ...

  9. Codeforces 859D - Third Month Insanity

    题意 有 \(2^n\) 个人要进行比赛,每次 \(2i\) 与 \(2i+1\) 号人进行比赛(\(i\in [0,2^{n-1})\) ).这一轮中赢的人进入下一轮.下一轮比赛的时候把进入这一轮的 ...

  10. 【设计模式】—— 创建者模式Builder

    前言:[模式总览]——————————by xingoo 模式意图 一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开.使用一个Director类进行对象的创建,Builder规定了这个创建 ...