angularJS之四大特性

         最近学习angularJS,大致将angulaJS的四大特性了解一遍,学习之余希望通过总结来帮自己加固一下对知识的理解,如果有错误或者有其他观点,希望大家指正!!

          angularJS的设计思想是以数据为核心的,对DOM操作进行的底层的封装,所以我们在进行编码时基本用不到DOM操作,和常见的jQuery以及bootstrap大不相同。angular JS中有许多基础指令在示例代码中用到就不再解释了。

angularJS的四大特性:1.采用MVC设计模式

                                      2.双向数据绑定

                                      3.依赖注入

                                      4.模块化开发

一.MVC设计模式

           说起MVC设计模式就不得不提一下设计模式这个关键词了,常见的设计模式有23+1种,这个+1就是指MVC了,其他的可以自行百度了解,学过软件工程的可能会了解的多一点,虽然很繁琐,但确实是很有用的东西。

            在angularJS中MVC分别代表模型(model),视图(view),控制器(controller)

            Model:模型,就是业务数据,前端项目中就是JS变量;

            View:业务数据向用户展示的地方,前端项目中就是HTML;

            Controller:负责业务数据的增删改查,前端项目中相当于函数。

在angular JS中数据一般创建在controller中便于管理和操作,利用ng-controller指令就可以在View中展示数据了,下面给出示例代码做参考:

<script> 
 var app=angular.module('myModule2',['ng']);
 app.controller('myCtrl2',function($scope){
        $scope.price=0;
        $scope.number=0;
    })
</script>

然后在HTML中展示            

<html ng-app='myModule2'>
<head>
</head>
<body>
    <div ng-controller='myCtrl2'>
        {{peice}}and{{number}}
    </div>
</body>

二.双向数据绑定

数据绑定有两个方向,意识从Model到View,二是从View到Model。

1.从Model到View,只要Model中数据发生改变,View中的数据会自动同步更新。许多方法都可以实现此种方向的绑定,例如:{{ }}、ngBind、ngIf、ngRepeat、ngShow、ngChecked,其他的指令没有手动尝试,如果大家有兴趣可以自己敲一敲尝试一下。

2.从View到Model,这种方向的绑定实现方法只有一种,就是ngModel          

                  单行文本输入域,ngMode可以把value属性值绑定到Model变量

                  复选框,ngModel可以把true/false值绑定到Model变量

                  单选框,ngModel可以把当前选中的单选框的value值绑定到Model变量

                  下拉框,ngModel可以把当前选中的option的value值绑定到Model变量

             示例代码:

<input type="checkbox" ng-model="isAgree">
<p>input中的内容:{{isAgree}}</p>

 三.依赖注入

学过spring的同学可能知道这个概念,对于angular JS来说如果需要那些对象可以在参数中直接写出来,然后就可以在函数的使用了,这些对象不需要你自己创建,它本身已经被angular创建好了,你就可以直接使用了。

            module.controller('控制器', function($scope, $interval){})

             Angular中的ngController指令在实例化控制器对象时,会根据指定的形参名,创建出控制器所依赖的对象,并注入给控制器对象——依赖注入(Dependency Injection,DI)现象。

注意:

          (1)Angular在创建控制器对象时,会根据形参列表中的每个形参的名称来创建依赖的对象,故控制器声明函数不能声明Angular无法识别的形参名——Angular只提供了这一种依赖注入方式——根据形参名来注入依赖的对象!

           (2)若项目JS文件使用了类似yuicompressor等压缩程序,默认会把函数的形参名精简为一个字母的形式,会导致Angular的依赖注入失败!解决办法:

module.controller('控制器名', [
'$scope',
'$interval',
'$http',
function(aaa,bbb,ccc){}
])

 四.模块化开发

这个按照我自己的理解,是angularJS的一种开发思想,将一个大的工程划分成若干小的部分,便于开发管理和维护。这种概念性的东西大家可以自行百度或者用其他办法搜集资料。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值