聊一下JS中的作用域scope和闭包closure scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解,closure就不一样了.我就被这个概念困扰了很久,无论看别人如何解释,就是不通.不过理越辩越明,代码写的多了,小程序测试的多了,再回过头看看别人写的帖子,也就渐渐明白了闭包的含义了.咱不是啥大牛,所以不搞的那么专业了,唯一的想法就是试图让你明白什么是作用域,什么是闭包.如果看了这个帖子你还不明白,那么多写个把月代码回过头再看,相信你一定会有收获:…
Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunction angular.isNumber angular.isObject angular.isString angular.isElement angular.version angular.equals(a,b)      //只要是相同的元素返回true,不同返回假 angular.forE…
一. JS中的作用域 1.全局变量:函数外声明的变量,称为全部变量 局部变量:函数内部使用var声明的变量,称为局部变量在JS中,只有函数作用域,没有块级作用域!!!也就是说,if/for等有{}的结构体,并不能具备自己的作用域.所以,函数外部不能访问函数内部局部变量(私有属性).因为,函数内部的变量,在函数执行完毕以后,就会被释放掉2.使用闭包,可以访问函数的私有变量!JS中,提供了一种"闭包"的概念:在函数内部,定义一个子函数,子函数可以访问父函数的私有便利.可以在子函数中进行操作…
转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.user 改变?angular.copy 和 = 号赋值有什么区别呢?新手还没有搞懂,请教各位了. <!DOCTYPE html> <html> <script src= "http://apps.bdimg.com/libs/angular.js/1.3.9/angular…
Angular.js 中的特性,双向绑定. 让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的? 这要归功于 scope 下面3个重要的方法: $watch $digest $apply 他们的区别是什么,我们来介绍下: $watch 这是一个监听 scope 上数据的监听器 方法说明: $scope.$watch('参数',function(newValue,oldValue){ //逻辑处理 }) 上面我们就是创建了一个监听器. ‘参数’ 就是$scope对象下的一个对象…
Angular.js中处理页面闪烁的方法详解 前言 大家在使用{{}}绑定数据的时候,页面加载会出现满屏尽是{{xxx}}的情况.数据还没响应,但页面已经渲染了.这是因为浏览器和angularjs渲染页面都需要消耗一定的时间,这个间隔可能很小,甚至让人感觉不到,这种情况一切正常,但这个时间也可能很长,这时候用户可能会看到满屏尽是{{xxxx}}.这种情况被叫做“Flash Of Unrendered Content (FOUC)(K)?and is always unwanted.”. 问题 为…
/// <summary> /// 被请求时 /// 在Angular.js中的H5页面调用Web api时跨域问题处理 /// </summary> /// <param name="sender">请求者</param> /// <param name="e">参数</param> protected void Application_BeginRequest(object sender,…
在讲解主要内容之前,我们先来看看JS的解析顺序,我们惯性地觉得JS是从上往下执行的,所以我们要用一个变量来首先声明它,来看下面这段代码: alert(a); var a = 1; 大家觉得这段代码有什么问题吗?会报错吧,a变量没有声明就调用?或者,可能弹出数字1? 实际上,你会发现这段代码执行的结果是弹出一个“undefined”,为什么会这样呢?下面我们就来讲讲JS的解析顺序. 1.JS的解析顺序 其实说JS是自上而下解析是正确的,但是是分为两步: 先自上而下解析声明,包括用var.funct…
在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的,整个生命周期中只会被调用一次. angular.module('myApp') .factory('myService', function() { return { 'username': 'auser' }; }); fu(){} 也可以是一个被注入对象的数组或者是函数 angular.mod…
  前  言            本章节将为大家介绍 AngularJS 路由.AngularJS 路由允许我们通过不同的 URL 访问不同的内容.通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). 1.1 Angular JS路由基础知识讲解 在AngularJS中使用路由:    1. 导入路由文件:angular-route.js      2. 在主模块中注入"ngRoute". angular.mod…
$timeout的用法 angular.js的$timeout指令对window.setTimeout做了一个封装,它的返回值是一个promise对象.当定义的时间到了以后,这个promise对象就会被resolve,回调函数就会被执行. 如果需要取消一个timeout,调用$timeout.cancel(promise)方法. 用法: $timeout(fn, [delay], [invokeApply]): fn: 回调函数(必填) delay: number类型.延迟的时间(非必填),如果…
依赖注入DI angularjs中与DI相关有angular.module().angular.injector(). $injector.$provide. DI 容器3要素:服务的注册.依赖关系的声明.对象的获取. 依赖注入 Spring中的DI AngularJS中的DI 服务注册 通过xml配置文件的<bean>标签或是注解@Repository.@Service.@Controller.@Component实现的 module和$provide相当于是服务的注册: 依赖关系声明 可以…
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. Scope 是一个对象,有可用的方法和属性. Scope 可应用在视图和控制器上. 当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递: 控制器中的属性对应了视图上的属性: <div ng-app="myApp" ng-controller="myCtrl"><h1>{{carname}}</h1&g…
在Angular JS开发中,经常需要定义一些变量,关于这些变量的定义方法及作用域应该注意以下几点: 1. 如果能用局部变量解决问题,尽量不要用全局变量. 2. 需要与界面双向绑定的变量采用$scope.variable 方法定义. 3. 不需要与界面双向绑定的变量在controller的方法外采用var 定义,这样作用域为当前controller. 4. 不要在controller中采用省略var的方式定义全局变量,这样作用域为整个网页,有可能与其他controller内变量冲突.…
Angular JS的强大功能就在于其可以自定义很多指令,现在就指令做一下详细的剖析. 一个Angular js 指令(directive)需要指定一个唯一的名字(myDirective)和一个函数,其中返回一个对象,该对象包含该指令应有的一些行为,具体参见如下所有的属性. angular.module('myApp', []) .directive('myDirective', function() { return { restrict: String, priority: Number,…
一 .angular中的依赖注入 angular的一个很重要的特性就是依赖注入,可以分开理解这4个字. 1.依赖: angular里面的依赖,有angular默认提供的,也有我们自己添加的.默认提供的比如$rootScope,$http,$injector等,我们也可以自己写factory函数来添加自己的依赖对象. 2.注入: 想要在当前上下文中使用已有的依赖,就必须通过$injector服务来获得依赖对象. 二.在一无所有的情况下获得$injector服务 $injector本身也是依赖之一,…
本文原链接:https://cloud.tencent.com/developer/article/1403589 前言 作用域(Scope) 1. 什么是作用域 2. 全局作用域和函数作用域 3. 块级作用域 作用域链 1.什么是自由变量 2. 什么是作用域链 3. 关于自由变量的取值 作用域与执行上下文 解释阶段: 执行阶段: 参考文章和书籍 关于Fundebug 前言 JavaScript 中有一个被称为作用域(Scope)的特性.虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,…
在$apply方法中存在脏检查,首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法. $watch(watchFn,watchAction,deepWatch) watchFn: angular表达式或函数的字符串 watchAction(newValue,oldValue,scope): watchFn发生变化会被调用 deepWatch:可选的布尔值 检查被监控的对象的每个属性是否发生变化 $watch会返回一个函数…
在js中数据的声明方式有两种: 1.用var声明,例如:var num = 10: 2.直接声明,例如:num = 10: 两种声明方式在某些情况下是有区别的: var data = 10; function fn01(){ var data = 100; function fn02(){ data = 1000; function fn03(){ data = 10000; } fn03(); } fn02(); } fn01(); console.log(data); 此时data会是多少呢…
angular js 结合html5 可以实现强大的表单验证功能 关闭html5自带的表单验证功能可以用…
$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}. listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:n…
一.Promise形象讲解A promise不是angular首创的,作为一种编程模式,它出现在1976年,比js还要古老得多.promise全称是 Futures and promises. 而在javascript世界中,一个广泛流行的库叫做Q 地址是https://github.com/kriskowal/q 而angular中的$q就是从它引入的.promise解决的是异步编程的问题,对于生活在同步编程世界中的程序员来说,它可能比较难于理解,这也构成了angular入门门槛之一,以下将用…
学习前端也有一段时间了,觉得自己可以与大家分享一些我当初遇到疑惑的东西,希望能给对此问题有疑惑的朋友带来一点帮助. 先来普及一下JS的概念(不要嫌我啰嗦,可能一些朋友开始学习JS是跟着视频和写好的代码学的,应该有一部分对它的结构或者说它的历史还不太了解),JavaScript由三种东西组成,一个叫ECMAScript,一个叫DOM,还有一个叫BOM,我们现在说的JS其实是它的核心--ECMAScript,简称ES.如今市面上的浏览器大部分是运行的ES5,但有一些也支持ES6,某些技术大牛都是用E…
作用域变量作用域的类型:全局变量和局部变量全局作用域对于最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的 <script> var outerVar = "outer"; function fn(){ console.log(outerVar); } fn();//result:outer </script> 局部作用域和全局用域相反,局部作用域一般只在固定的代码片段内可访问到,对于函数外部是无法访问的 <script> fu…
本篇文章在于详细解读JavaScript的作用域,从底层原理来解释一些常见的问题,例如变量提升.隐式创建变量等问题,在和大家一起交流进步的同时,也算对自己知识掌握的记录,方便以后复习 首先,直接捡干的来,JS作用域大致分为三部分:词法作用域.函数作用域/块作用域.闭包. 在传统的编译语言中,程序的源代码编译由三个步骤组成:词法分析.语法分析.代码生成.而JS属于动态语言,它的编译过程不发生在构建之前,而是在代码执行前(一般只有几微妙,甚至更短),简单说,任何JS代码执行前都要编译,编译完通常马上…
作用域:在编程语言中,作用域控制着变量与参数的可见性及生命周期.JS确实有函数作用域,那意味着定义在函数中的参数和变量在函数外部是不可见的,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的. var a = 1; var fs = function (){ var b = 2; var c = 4 var fun = function (){ var c = 3; alert(a) //输出1 alert(b) //输出2 alert(c) //输出3 } fun(); } f…
最近项目中存在的问题头疼脑热了好一会. 我先简单说明下问题是由,使用$timeOut循环调用的时候由于页面存在异步加载会出现反复执行循环反复调用$timeOut,怎么清除跳出循环都不管用.于是查到了如下方法,可能理解上稍有偏差但是事实证明是管用的. 在angular中,如需使用$timeOut需要通过注入service的方式在控制器中依赖注入这里就不多说了. function fnTime (x){ if( x<100 ){ x--; var time = $timeOut( function(…
通过过滤器可以实现很多数据格式化的功能 常用方法形如{{ data | uppercase}} 或者是{{ 123.456 | number:2 }} 也可以通过在控制器中注入$filter来实现功能 angular.module('MyApp',[]) .controller('FilterController',function($scope,$filter){ $scope.data = $filter('uppercase')('ard'); }); 1.currency 货币单位 {{…
我们知道在使用ng-app或者ng-controller指令的时候,都会创建一个新的作用域($rootScope或者是$scope),并且在使用ng-controller指令创建的作用域会继承父级作用域($rootScope或者是$scope)所有的方法和属性. 但是这里继承的属性就有一些学问了 运行如下代码: html <div ng-controller="SomeController"> {{ someBareValue }} <button ng-click=…