全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angular企业级开发——MVC之控制器详解

1.MVC中的控制器

AngularJS的控制器主要为了把模型和视图连接在一起。大多数业务逻辑操作都会放在视图对应的控制器中。当然如果我们能够把业务逻辑放到后端的REST服务中,就可以开发轻量级AngularJS应用。

涉及到多个控制器中使用的业务逻辑,需要放到一个公共的服务中,然后把改服务注入使用到该业务逻辑的控制器中。

2.理解控制器

在AngularJS的控制器中,构造函数会有$scope参数。当一个控制器通过ng-controller指令连接到DOM上,Angular将实例化一个新的控制器对象,然后调用指定的控制器的构造函数。一个新的子作用范围(scope)将被创建,并作为一种可注入的参数传递给控制器​​的构造函数为$scope

如果控制器使用controller as语法附加到DOM上,那么控制器实例将被分配给新的$scope范围。并且多了一个和as同名的属性,然后把自己指向这个属性,就方便我们访问了。

3.控制器的作用

3.1 在控制器中初始化模型(添加属性)

创建控制器并将它附加到DOM元素之后,AngularJS会创建一个子作用域。子作用域保存着对应控制器的数据模型。子作用域可以通过$scope来获取。

<!DOCTYPE html>
<html lang="en" ng-app="myApp">

<head>
  <meta charset="UTF-8">
  <title>AngularJS Controller Demo</title>
  <script type="text/javascript" src="angular.min.js">

  </script>
  <script src="app.js" charset="utf-8"></script>
</head>

<body ng-controller="MainController">
  <p>{{username}}</p>
  <p>{{age}}</p>
</body>

</html>
(function () {
  'use strict';
  angular.module("myApp", [])
    .controller('MainController', ['$scope', function ($scope) {
      $scope.username="leeli";
      $scope.age=28;
    }]);
})();

3.2 在控制器中附件行为(添加事件或方法)

附加行为的方式是把方法或事件添加到$scope对象上,以便在控制器对应的视图中使用到改方法。也有很多方法是处理业务的,也是附加到$scope对象上。
ng-click对应的事件方法在controller里面定义为addItem,所以在视图上我们可以使用addItem方法。

视图上的ng-clickng-modelng-repeat都是AngularJS的内置指令,后续博客会详细介绍。

4.控制器作用域

因为控制器是附加到DOM元素上,所以存在着一个视图,有多个控制器。控制器之间可以是并列的,也可以是嵌套的形式存在。

4.1 视图中控制器并列

各个控制器从附加DOM元素节点开始,到节点对应闭合标签结束的地方创建了一个子控制域,单个控制器里面的$scope对象只能访问和调用该控制器范围内的属性和方法。

4.2 视图中控制器嵌套

默认情况下,AngularJS在当前作用域中无法找到某个属性,就会在父级作用域中进行查找。即子级控制器会继承父级控制器中的对象。但是子级作用域和父级作用域中有相同的属性,子级使用自己的作用域。这个时候子级作用域要访问父级作用域的属性可以通过$parent。类似JavaScript本身的原型链方式。

5.何为ControllerAs

AngularJS提供$scope方式来处理Controller。代码如下:

<div ng-app="myApp">
 <div ng-controller="MainController">
  <p>Hello {{ name }}</p>
 </div>
</div>

var app = angular.module('myApp', []);
app.controller('MainController', ['$scope',function($scope) {
 $scope.name = "world.";
}]);

AngularJS处理Controller提供一种作用域别名的方式,其实就是将Model直接绑定Controller的实例上。

 代码如下:

<div ng-app="myApp">
 <div ng-controller="MainController as mainCtrl">
  <p>Hello {{ name }}</p>
 </div>
</div>

var app = angular.module('myApp', []);
app.controller('MainController', function() {
 this.name = "world.";
});

使用这种方式处理Controller有3个好处:

1 Controller的定义不再依赖$scope,Controller就是一个普通的函数定义,这样代码于框架无关,假设哪天不使用AngularJS框架,这里的代码可以进行复用和移植。

2 测试更友好,不需要开发者去模拟一个$scope

3 增强代码的可读性。在控制器并行和嵌套的demo中,视图上我们都使用花括号包含着name,userName等属性。如果有多个控制器并行,或者多个层级的嵌套,我们有时很难区分在视图上使用时哪个控制器下的属性,可以使用ControllerAs来避免这个问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # 控制器  # mvc  # 详解  # 控制器详解  # 详解AngularJS控制器的使用  # 简述AngularJS的控制器的使用  # AngularJS控制器之间的数据共享及通信详解  # AngularJS基础学习笔记之控制器  # AngularJS指令与控制器之间的交互功能示例  # AngularJS控制器详解及示例代码  # AngularJS控制器之间的通信方式详解  # AngularJS入门教程之控制器详解  # AngularJS控制器controller给模型数据赋初始值的方法  # AngularJS开发教程之控制器之间的通信方法分析  # 器中  # 多个  # 可以通过  # 将被  # 可以使用  # 自己的  # 都是  # 也有  # 会有  # 放在  # 很难  # 不需要  # 中有  # 会在  # 这个问题  # 这个时候  # 详细介绍  # 将它  # 涉及到  # 绑定 


相关文章: 网页设计与网站制作内容,怎样注册网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何在Windows虚拟主机上快速搭建网站?  建站之星安装模板失败:服务器环境不兼容?  c++ stringstream用法详解_c++字符串与数字转换利器  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  linux top下的 minerd 木马清除方法  如何在宝塔面板创建新站点?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  表情包在线制作网站免费,表情包怎么弄?  香港服务器租用费用高吗?如何避免常见误区?  c# 服务器GC和工作站GC的区别和设置  大学网站设计制作软件有哪些,如何将网站制作成自己app?  电商网站制作公司有哪些,1688网是什么意思?  非常酷的网站设计制作软件,酷培ai教育官方网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何通过.red域名打造高辨识度品牌网站?  股票网站制作软件,网上股票怎么开户?  建站之星3.0如何解决常见操作问题?  建站之星价格显示格式升级,你的预算足够吗?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  深圳网站制作案例,网页的相关名词有哪些?  C++如何使用std::optional?(处理可选值)  Swift中switch语句区间和元组模式匹配  如何通过WDCP绑定主域名及创建子域名站点?  如何在阿里云ECS服务器部署织梦CMS网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何通过IIS搭建网站并配置访问权限?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在阿里云香港服务器快速搭建网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  北京网站制作网页,网站升级改版需要多久?  如何用虚拟主机快速搭建网站?详细步骤解析  建站主机解析:虚拟主机配置与服务器选择指南  手机网站制作与建设方案,手机网站如何建设?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  大型企业网站制作流程,做网站需要注册公司吗?  移民网站制作流程,怎么看加拿大移民官网?  如何在IIS中新建站点并配置端口与物理路径?  如何在Golang中指定模块版本_使用go.mod控制版本号  哈尔滨网站建设策划,哈尔滨电工证查询网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  已有域名和空间如何搭建网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何注册花生壳免费域名并搭建个人网站?  音乐网站服务器如何优化API响应速度?  上海网站制作开发公司,上海买房比较好的网站有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。