angularjs中有关scope作用域解释
本篇文章主要介绍了详解angularjs 学习之 scope作用域,现在分享给大家,也给大家做个参考。
简介
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个存储应用数据模型的对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
作用域是Web应用的控制器和视图之间的粘结剂:
控制器 --> 作用域 --> 视图(DOM)
指令 --> 作用域 --> 视图(DOM)
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:
<p ng-controller="myCtrl"> <h1>{{name}}</h1> </p> <script> var app = angular.module('test', []); app.controller('myCtrl', function($scope) { $scope.name = "天下行走"; }); </script>
输出结果: 天下行走
控制器中创建一个属性名 "name" ,对应了视图中使用 {{ }} 中的名称。
当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{name}} 。
AngularJS 应用组成如下:
View(视图) , 即 HTML。
Model(模型) , 当前视图中可用的数据。
Controller(控制器) , 即 JavaScript 函数,可以添加或修改属性。
scope 是一个 JavaScript 对象,带有 属性 和 方法 ,这些属性和方法可以在视图和控制器中使用。
再来看个例子:
<p ng-app="myApp" ng-controller="myCtrl"> 输入你的名字: <input ng-model="name"> <h1>{{greeting}}</h1> <button ng-click='sayHello()'>greet</button> </p> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.name = "张三"; $scope.sayHello = function() { $scope.greeting = $scope.name + '是个笨蛋!'; }; }); </script>
在这个例子中,
控制器: MyCtrl ,它引用了 $scope 并在其上注册了两个属性和一个方法
$scope 对象:持有上面例子所需的数据模型,包括 name 属性、 greeting 属性 (注:这是在 sayHello() 方法被调用时注册的) 和 sayHello() 方法
视图:拥有一个输入框、一个按钮以及一个利用双向绑定来显示数据的内容块
那么具体整个示例有这样两个流程,从控制器发起的角度来看就是:
1、控制器往作用域中写属性:
给作用域中的 name 赋值,然后作用域通知视图中的 input 数据变化了, input 因为通过 ng-model 实现了双向绑定可以知道 name 的变化,进而在视图中渲染出改变的值
2、控制器往作用域中写方法
给作用域中的 sayHello() 方法赋值,该方法被视图中的 button 调用,因为 button 通过 ng-click 绑定了该方法,当用户点击按钮时, sayHello() 被调用,这个方法读取作用域中的 name 属性,加上后缀字符串,然后赋值给在作用域中新创建的 greeting 属性
整个示例的过程如果从视图的角度看,那主要是以下三个部分:
1、input 中的渲染逻辑:展示了通过 ng-model 进行的作用域和 视图中某表单元素的双向绑定
根据 ng-model 中的 name 去作用域中取,如果已经有值,那么用这个默认值填充当前的输入框
接受用户输入,并且将用户输入的字符串传给 name ,这时候作用域中的该属性值实时更新为用户输入的值
2、button 中的逻辑
接受用户单击,调用作用域中的 sayHello() 方法
3、{{greeting}} 的渲染逻辑
初始阶段 :在用户未单击按钮时,不显示内容
取值阶段 :在用户单击后,这个表达式会去 scope 中取 greeting 属性,而本例中这个作用域和控制器是同一个的,这时候,该作用域下 greeting 属性已经有了,这时候这个属性就被取回来了
计算阶段 :在当前作用域下去计算 greeting 表达式,然后渲染视图,显示 张三是个笨蛋!
经过以上的两种角度分析示例过程,我们可以知道: 作用域(scope) 对象以及其属性是视图渲染的唯一数据来源。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
angularjs使用gulp-uglify压缩后执行报错的解决方法
Vue+ElementUI实现表单动态渲染、可视化配置的方法
以上是angularjs中有关scope作用域解释的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本篇文章继续Angular的学习,带大家了解一下Angular中的元数据和装饰器,简单了解一下他们的用法,希望对大家有所帮助!

Angular.js是一种可自由访问的JavaScript平台,用于创建动态应用程序。它允许您通过扩展HTML的语法作为模板语言,以快速、清晰地表示应用程序的各个方面。Angular.js提供了一系列工具,可帮助您编写、更新和测试代码。此外,它还提供了许多功能,如路由和表单管理。本指南将讨论在Ubuntu24上安装Angular的方法。首先,您需要安装Node.js。Node.js是一个基于ChromeV8引擎的JavaScript运行环境,可让您在服务器端运行JavaScript代码。要在Ub

本篇文章带大家深入了解一下angular的状态管理器NgRx,介绍一下NgRx的使用方法,希望对大家有所帮助!

随着互联网的飞速发展,前端开发技术也在不断改进和迭代。PHP和Angular是两种广泛应用于前端开发的技术。PHP是一种服务器端脚本语言,可以处理表单、生成动态页面和管理访问权限等任务。而Angular是一种JavaScript的框架,可以用于开发单页面应用和构建组件化的Web应用程序。本篇文章将介绍如何使用PHP和Angular进行前端开发,以及如何将它们

本篇文章给大家分享一个Angular实战,了解一下angualr 结合 ng-zorro 如何快速开发一个后台系统,希望对大家有所帮助!

angular中怎么使用monaco-editor?下面本篇文章记录下最近的一次业务中用到的 monaco-editor 在 angular 中的使用,希望对大家有所帮助!

本篇文章带大家了解一下Angular中的独立组件,看看怎么在Angular中创建一个独立组件,怎么在独立组件中导入已有的模块,希望对大家有所帮助!
