4.控制器

1.概述

AngularJS 中的控制器是一个函数,用来给视图的作用域添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为。

当在页面上创建一个新的控制器时,AngularJS 会生成并传递一个新的$scope 给这个controller,可以在这个controller 里初始化$scope。AngularJS会自动实例化controller,我们只需编写构造函数即可。

不建议在全局作用域中创建controller, 否则会污染全局命名空间。合理的做法是创建一个模块,然后在模块中创建控制器。如下所示:

//不建议在全局作用域中创建控制器函数,高版本的AngularJS 已经不能这样使用
//function FirstController($scope){
//    $scope.message="Hello";
//}

//创建一个模块,在模块中创建控制器
var app = angular.module("MyApp",[]);
app.controller("FirstController",function($scope){
    $scope.message="Hello";
});

  

用内置指令ng-click 可以将按钮、链接等其他元素同点击事件进行绑定。

<div ng-controller="FirstController">
    <h4>The simplest adding machine ever</h4>
    <button ng-clikck="add(1)" class="button"></button>
    <a ng-click="Substract(1)">Substract</a>
    <h4>Current count:{{counter}}</h4>
</div>

<script>
    app.controller("FirstController",function($scope){
        $scope.counter=0;
        $scope.add=function(amount){
            $scope.counter += amount;
        };
        $scope.Substract(amount){
            $scope.counter -= amount;
        };
    });
</script>

用这种方式可以在视图中调用add() 或substract() 方法,这两个方法可以定义在FirstController 的作用域中,或父级$scope 中。

AngularJS 同其他JavaScript 框架最大的区别是,控制器并不适合用来执行DOM 操作、格式化或数据操作,或者除存储数据模型之外的状态维护操作。它只是视图和$scope 之间的桥梁。设计良好的应用会将复杂的逻辑放到指令和服务中。通过使用指令和服务,我们可以将控制器重构成一个轻量且更易维护的形式。

AngularJS 允许在$scope 上设置包括对象在内的任何类型的数据,并且可以在视图中展示对象的属性。

2.控制器嵌套

即作用域包含作用域,AngularJS应用的任何一个部分,无论它渲染在哪个上下文中,都有父级作用域存在。对ng-app 所处的层级来讲,它的父级作用域就是$rootScope。

默认情况下,AngularJS 在当前作用域中无法找到某个属性时,便会在父级作用域中进行查找。如果找不到对应的属性,会顺着父级作用域一直向上查找,直到$rootScope 为止。如果在$rootScope中仍找不到,程序会继续运行,但视图无法更新。

<div ng-controller="ParentController">
    <div ng-controller="ChildController">
        <a ng-click="sayHello()">Say Hello</a>
    </div>
    {{person}}
</div>

<script>
app.controller("ParentController",function($scope){
    $scope.person = {greeted: false};
});

app.controller("ChildController",function($scope){
    $scope.sayHello=function(){
        $scope.person.name = ‘Jack‘;
    };
});
</script>

  

时间: 2024-10-13 04:56:25

4.控制器的相关文章

LCD实验学习笔记(八):中断控制器

s3c2440有60个中断源(其中15个为子中断源). 程序状态寄存器(PSR)的F位设为1,禁用快速中断(FRQ). 程序状态寄存器(PSR)的I位设为1,禁用普通中断(IRQ). 相反,PSR寄存器F位为0开FRQ中断,I位为0开IRQ中断. s3c2440中断控制器中有五个控制寄存器:中断源等待寄存器(SRCPND),中断模式寄存器(INTMOD),屏蔽寄存器(INTMSK),优先级寄存器(PRIORITY),中断等待寄存器(INTPND). SRCPND寄存器各位对应不同的中断,其中外部

梳理版本控制器:SVN和Git比较

在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?今天在此详细记录下: SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别. Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应Git提供的一些概念和特征. 先来说说集中式版本控制系统: 版本库是集中存放在中央服务器的,而干

Json&amp;Razor&amp;控制器

JsonJson 属于JavaScript所以要书写在<script></script>中1.语法规则: 1.1:键值对 1.2:逗号分隔 1.3:花括号保存对象 1.4:方括号保存数组JSON的值可以为NULL2.JSON对象是在花括号内书写(键值对"{ "name":"小王" , "url":"www.xiaowang.com" }")3.使用数组的话则是用方括号包裹每个JSON

基于MVC4+EasyUI的Web开发框架形成之旅--MVC控制器的设计

自从上篇<基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍>总体性的概括,得到很多同行的关注和支持,不过上一篇主要是介绍一个总体的界面效果和思路,本系列的文章将逐步介绍其中的细节,本文主要介绍整个Web开发框架中的MVC控制器的设计.在设计之初,我就希望尽可能的减少代码,提高编程模型的统一性.因此希望能够以基类继承的方式,和我Winform开发框架一样,尽可能通过基类,而不是子类的重复代码来实现各种通用的操作. 1.登录控制的控制器基类设计 我们知道,一般我们创建一个MVC的控制

基于MVC4+EasyUI的Web开发框架形成之旅--基类控制器CRUD的操作

在上一篇随笔中,我对Web开发框架的总体界面进行了介绍,其中并提到了我的<Web开发框架>的控制器的设计关系,Web开发框架沿用了我的<Winform开发框架>的很多架构设计思路和特点,对Controller进行了封装.使得控制器能够获得很好的继承关系,并能以更少的代码,更高效的开发效率,实现Web项目的开发工作,整个控制器的设计思路如下所示. 从上图的设计里面可以看到,我把主要能通过抽象封装的CRUD方法都放到了BusinessController<B, T>类里面,

CI3.0控制器下面建文件夹 访问一直404 的解决方法

在单入口文件(框架目录下面的index.php)最下面的require_once BASEPATH.'core/CodeIgniter.php';这行上面设置一个路径,是相对于conrollers文件夹的,你这里这样写:$routing['directory'] = './home/';(这里的home是控制器里的子目录),然后在路由配置文件那里填$route['default_controller'] = 'home';

3 控制器设计

原文链接 控制器设计 基于roll, pitch, yaw的传递函数表达的系统的线性数学模型 使用Matlab仿真工具设计了一个闭环控制器. 首先,在Matlab脚本里面定义系统模型的常量. %% Constants d = 0.45; % diameter quadrocopter l = sqrt(d^2/8); % distance between one rotor and center of mass m = 1.0024; % mass of quadrocopter g = 9.8

MVC学习笔记——控制器

一.创建新的控制器 操作:选中Controllers文件夹,右键Add/Controller,然后给予命名eg:StoreController 判断:一个类是否为控制器类:该类是否继承自using System.Web.Mvc.Controller 明确:模型和视图虽然非常有用,但是控制器才是真正的核心,每个请求都必须通过控制器处理,它是MVC应用程序的“指挥员”! 代码演示: using System; using System.Collections.Generic; using Syste

AngularJS 外部文件中的控制器

在大型的应用程序中,通常是把控制器存储在外部的文件中. <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible"content="IE=edge" /> <me

MVC控制器给View返回实体

前言 这几天把vs12更新到了vs12 5了,因为发现我之前装的12有问题,没有mvc,之后就从itellyou上下载了12的update5更新了一下.说实话,从开发到现在,自己只是平时自己玩用mvc+ef,接触的项目倒是没有用过.很明显现在的自己跟12年乃至13年的自己比确实不是一个水准的(吹一下自己),说明自己是进步了,但是进步的幅度并不大,要是大就该像大牛靠拢了,其实离那个地方很远很远很远... 正文 今天只是做个测试,提取一下数据.mvc4生成网站,然后建一个Ef类库,随便写个Index