菜鸟AngularJS学习之路 【第一天】。(排版修正)

第一次写博客有点紧张,要不要脱啊。。哈哈(毕竟我是段友)

本着“不求闻达于诸侯“ 的精神开始了我的博客之旅,非常感谢我的好友梅哥给我了这个建议,以后把每天的学习成果记录到这里与大家分享。

本人菜鸟一个 大家轻喷,渴望得到指点!大笑

所看书籍为:AngularJS权威教程 CSDN上面可以找到

第一天:

1.初识AngularJS

首先我参照书上写了一个简单的数据绑定例子

html 页面结构就不再写出来

<div ng-app> 

        <input ng-model="meige" type="text" placeholder="梅哥" />
        <h1>我的好朋友{{ meige }}</h1>
</div>

1.先说明一下我对ng-app的理解 我对它的理解是MVC里面的 view视图 在Angular里面也叫模块 它是用来渲染页面内容的 每一个页面可以有多一个或多个ng-app来标注不同的模块 。

2.ng-model 很明显是mvc模式里德 model 用来提供数据模型。

3.{{ }} 这个是用来绑定数据用的操作符 ,和ASP.NET MVC的”@“操作符 ASP.NET的”<% %>“ 感觉很像。只不过其实{{ }} 里面绑定的都是 scope() scope对象时用来在视图和控制器之间传递数据的枢纽。(Angularjs为双向数据绑定:视图上的数据变化 会映射到实体模型 。实体模型的数据变化也会反应到视图上。实现这个绑定是通过一系列循环 和脏值检查) 通过看书知道一些概念,分享给大家! 后面再研究 ,

上面的代码 运行结果如下

这里写图片描述

当我在文本框中输入任何值的时候 {{ meige }} 将响应对应的值,用ng-model实现了动态绑定 而只需要简单的两个小步骤 ,还是蛮吸引人得!

接着我通过书上的示例来实现一个时钟效果 这里我们要用到第二个AngularJS指令 ng-controller (顾名思义这个是控制器的意思) 先实现效果 后面再来探索一下他们的包含关系。控制器命名格式为 nameController
首先写html代码

<div ng-app  ng-controller="oygController">
<h1>现在是深圳时间:{{ time }}</h1>
<div>

//这里接收两个参数个: $scope(实体模型对象) 它的作用前面说过时 视图和控制器

之间数据同步的桥梁. $timeout 为计时器

    function oygController($scope, $timeout)
    {
        var updateTime = function () {

            $scope.time = new Date().toLocaleString();

            $timeout(function () {
                updateTime();
            }, 1000);
        }

        updateTime();
    }

运行上面的代码得到如下结果

这里写图片描述

时间会一直刷新,显示当前时间。 相当于一个死循环。

如果有人跟我一样是初学者肯定都会对$timeout 没什么好感 因为并不认识 那我们就来用 setInterval 来实现相同的功能,
编写代码如下

    function oygController($scope, $timeout)
    {
        $scope.time = new Date().toLocaleString();

        setInterval(function () {
            $scope.time = new Date().toLocaleString();
            $scope.$apply();  //这句代码是用setInterval实现的核心代码 因为angularjs并不知道你已经更新了模型的值  你需要手动去触发这个函数 让它知道你更新了 从而实现绑定
        }, 1000)
    }

这样我们用原生的 定时器也实现了相同的功能。关于绑定执行原理后面再探索 。

下面我们来谈一谈 作用域,视图,控制器,模型对象的关系

经过一些学习 作用域对于angularjs来说至关重要,但是我现在还没有完全领悟它。 视图(ng-app)制定再Html页面的哪个区域是属于angualrjs的哪个模块来处理的。可以包含诺干戈控制器 对于控制器而言他们的关系都是平等的每一个控制器都有自己的 scopengapp rootscope对象。和ECMAscript 中的原型继承一样,子对象可以访问父对象的属性。(因为继承了) 不知道我理解的对不对 ,求指点!

因此 我总结出如下的包含关系 ng-app包含controller $scope 连接ng-app和controller

根据此关系 查了一些资料 做了一个页面包含多个模块的示例 也说明了 angularjs模块化的概念(html 层面 js层面正在学习)

下面是示例代码(可以直接运行):

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="angular_1.2.13.js"></script>
    <!--<script src="angular-1.6.4/angular-1.6.4/angular.min.js"></script>-->
</head>
<body>
    <div ng-app="myAPP">
        <div ng-controller="oygController">
            <h1>{{ time }}</h1>
        </div>

    </div>

    <div id="oyg" ng-app="meigeAPP">
        <div ng-controller="meigeController">
            <h1>{{ meige }}</h1>
        </div>
    </div>

    <script>
        //APP  module是controller的容器  controller 负责具体元素的逻辑处理   数据模型暂时还没看到

        //AngualrJS 默认只会装载第一个App模块
        var oygAPP = angular.module("myAPP",[]);//这个相当于视图 (页面显示)
        oygAPP.controller("oygController", function ($scope) {      //控制器(业务逻辑处理 )
            $scope.time = "月落乌啼霜满天";  //$scope 实体模型对象
        });

        //之后的模块需要手动启动
        var meigeAPP = angular.module("meigeAPP", []);
        meigeAPP.controller("meigeController", function ($scope) {
            $scope.meige = "梅哥来到小河边";
        });

        //这句代码用来启用第二模块  这里要
        angular.bootstrap(document.getElementById("oyg"), ['meigeAPP']); 
    </script>
</body>
</html>

各位大侠,明天继续 菜鸟轻喷!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值