• 第六章 表达式


      前面使用的{{ }}符号将一个变量绑定到$scope上的本质就是一个表达式。

      表达式和eval()很相似,但有以下不同特性:

    • 所有表达式都在其所属作用域内部执行,并有访问本地$scope的权限
    • 不会抛出异常
    • 不允许有流程控制功能(if/else)
    • 可以接受过滤器和过滤器

    解析AngularJS表达式

      尽管AngularJS会自动解析表达式,但有时也可以手动解析。AngularJS通过$pars这个内部服务来进行表达式运算。代码如下:

      

    <!doctype html>
    <html>
    
        <head>
            <script src="angularJs/1.2.13/angular.js"></script>
        </head>
    
        <body ng-app="myApp">
            <div ng-controller="MyController">
                <input ng-model="expr" type="text" placeholder="Enter an expression" />
                <h2>{{ parseValue }}</h2>
            </div>
    
        </body>
        <script>
            angular.module("myApp", [])
                .controller('MyController',
                    function($scope, $parse) {
                        $scope.$watch('expr', function(newVal, oldVal, scope) {
                            if (newVal !== oldVal) {
                                // 用该表达式设置parseFun 
                                var parseFun = $parse(newVal);
                                // 获取经过解析后表达式的值
                                $scope.parseValue = parseFun(scope);
                            }
                        });
                    });
        </script>
    
    </html>

      上述代码中$watch函数有三个参数:$watch(watchFn, watchAction, deepWatch)

        watchFn:带有AngularJS表达式或函数的字符串,它会返回被监控数据模型的当前值

        watchAction:函数或者表达式,当为函数时,传入三个参数,分别是新值,旧值,作用                                      域对象的引用。

      deepWatch:是否深度监控,当为true时,不仅仅监控对象的简单的值, 也会监控对象                           属性的变化。

       $watch 函数会返回一个函数,当你不再需要接收变更通知时,可以用这个返回的函数注销监控器。

    插值字符串

      

     

     

  • 相关阅读:
    iOS下的四舍五入
    下载私有库 classdump命令 privateFrameworks
    苹果账号下添加测试设备
    新的Mac下如何配置开发者账号信息
    open开发笔记
    C#面向对象基础抽象类
    C#面向对象基础继承
    C#面向对象基础接口
    C#面向对象基础对象引用
    COJ1165(Nearest Numbers)
  • 原文地址:https://www.cnblogs.com/wuchaodzxx/p/5618499.html
Copyright © 2020-2023  润新知