AngularJS复习

$watch实现对$scope中挂载的数据监听

   //参数1  是你将要监听的属性,且要单引号括起来。

  //参数2 是一个回调函数,函数的参数是改变的新值和旧值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/angular.js"></script>
</head>
<body>
    <div ng-app="app">
        <div ng-controller="MainController">
            <input type="text" ng-model="msg">
            <p>{{msg}}</p>
        </div>
    </div>
    <script>
        var app= angular.module('app',[])
        app.controller('MainController',function($scope){
            $scope.msg="hello world"
            //$watch实现对$scope中挂载的数据监听
            //参数1是你将要监听的属性,且要单引号括起来。
            //参数2是一个回调函数,函数的参数是改变的新值和旧值
            $scope.$watch('msg',function(newvalue,ordvalue){
                 console.log('newvalue:'+newvalue+'ordvalue:'+ordvalue)
            })
        })
    </script>
</body>
</html>

02-$apply实现脏检查机制

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/angular.js"></script>
</head>

<body>
    <div ng-app="app">
        <div ng-controller="MainController">
            <input type="text" ng-model="num">
            <input type="button" value="add1" onclick="add()">
        </div>
    </div>
    <script>
        var app = angular.module('app', [])
        //使用推断式注入声明,但是參數會被混淆變,压缩时
        //并會替代為a,b之類,这时我们推荐行内式注入式声明
        app.controller('MainController', function ($scope) {
            $scope.num = 0
            //通过全局对象window来获取$scope的引用,则这个属性获得同样功能
            window.scope = $scope
        })
        //创建普通的JavaScript的函数
        function add() {
            window.scope.num += 1
            //手动调用&apply,实现脏检查机制
            //在angular中$apply是自动执行,无需手动调用
            window.scope.$apply()
            console.log(window.scope.num)
        }
        // var app = angular.module('myApp', []);
        // 创建 value 对象 "temp" 并传递数据
        // app.value("temp", "Hello");
        // app.controller('MyController', ['$scope', 'temp', function ($scope, temp) {
        //     $scope.sayHello = function () {
        //         alert(temp);
        //     }
        // }]);

    </script>
</body>

</html>

依赖注入方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/angular.js"></script>
</head>
<body>
    <div ng-app="app">
        <div ng-controller="MainController">
            <input type="button" value="点我" ng-click="sayHello()">
        </div>
    </div>
    <script>
        var app=angular.module('app',[])
        app.value('temp','hello')
        // 行内式注入声明
        // //创建value对象“temp”并传递数据
        // app.value('temp','hello')
        // app.controller('MainController',['$scope','temp',function($scope,temp){
        //     $scope.sayHello=function(){
        //         alert(temp)
        //     }
        // }])
         
        //显示注入声明
        var MainController=function($scope,temp){
            $scope.sayHello=function(){
                alert(temp)
            }
        }
        MainController.$inject=['$scope','temp']
        app.controller('MainController',MainController)
    </script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值