Angularjs API

$scope:

var myapp = angular.module(‘myapp‘, []);

  myapp

    .controller(‘parent‘, function ($scope,$timeout) {

      $scope.$broadcast(‘you‘);//已经发出广播

      $scope.$on(‘you‘, function (event) {

        console.log(event);//广播已经发出才进行监听,所以不会执行这一行

      });

    })
    .controller(‘child‘, function ($scope) {

      $scope.$on(‘you‘, function (event) {

        console.log(event);//同样不会执行

      });

    })
<div ng-controller="parent">

  <div ng-controller="middle">

    <div ng-controller="child"></div>

  </div>

</div>
var myapp = angular.module(‘myapp‘, []);

  myapp

    .controller(‘parent‘, function ($scope, $timeout) {

      $scope.$on(‘you‘, function (event, data) {

        console.log(event);  //不会接收到通知
        console.log(data);  //不会接收到通知

      });

    })

    .controller(‘middle‘, function ($scope, $timeout) {

      $scope.$on(‘you‘, function (event, data) {

        event.stopPropagation();
        console.log(event);  //event对象
        console.log(data);  //‘hello‘

      });

      $scope.$on(‘you‘, function (event, data) {

        console.log(event);  //虽然已经调用了stopPropagation,但由于是在同一个scope内,所以仍然event对象
        console.log(data);  //‘hello‘

      });

    })
    .controller(‘child‘, function ($scope) {

      $scope.$on(‘you‘, function (event, data) {

        console.log(event); //event对象
        console.log(data);  //‘hello‘

      });

      $scope.$emit(‘you‘, ‘hello‘);

    })

stopPropagation只针对$emit, 如果使用$scope.$broadcast(‘you’) 给you事件发送广播,那么event对象里就不会有stopPropagation方法,即使在子scope再使用$scope.$emit(‘you’)发送消息,调用该方法仍然报错。

$destroy:

var onTimeout = function() {

        $scope.value += 1;
        timer = $timeout(onTimeout, 1000);

};

var timer = $timeout(onTimeout, 1000);

$scope.value = 0;

$new (new,parent):  传入new会创建隔离作用域(isolate scope)??parent

.controller(‘parent‘, function ($rootScope, $scope) {

      var child1 = $scope.$new();

      var child2 = child1.$new();

      $scope.a = 0;

      child1.a = 10;

      console.log(child2.a); //10

      child2.$watch("a", function (newValue) {

        console.log(newValue); //执行change后 11

      });

      $scope.change = function () {

        child2.a++;

        console.log(child1.a); //10

      };

    })

$watch ( ‘val‘, function ( newval, oldval, scope){ },boolean),

$watchGroup ( [ ‘str1‘, ‘str2‘ ] ,function ( newval, oldval, scope ))

$watchCollection ( obj ,function ( newval, oldval, scope ))

  $watch 一般用来监听基本类型,监听对象时除非对象完全改变,也就是地址值发生改变,否则监听不到

  $watchGroup会为数组中的每个变量添加一个$watch, 但只能浅监听,无法监听对象属性的改变,该属性主要是用来一次性为多个值添加浅监听

.controller(‘parent‘, function ($rootScope, $scope, $timeout) {

      $scope.one = {a: 1};

      $scope.two = {b: 2};

      $scope.th3 = {c: 3};

      $scope.arr = [‘one‘, ‘two‘],
      $scope.$watchGroup($scope.arr, function (newval, oldval) {    //一旦监听某个数组,该数组就会被锁定,对该数组无论做任何修改都不会改变监控的对象
    console.log(‘hi‘);

      })

      $scope.change = function () {

        $scope.arr[2] = ‘th3‘;

        $scope.th3 = {};  //不起作用

      }

      $scope.change2 = function () {

        $scope.two = {};

      }

    })

   

.controller(‘parent‘, function ($rootScope, $scope, $timeout) {  $scope.a=1;  $scope.b=2;  var cal=function(scope){    return scope.a;  }  $scope.$watchGroup([cal],function(newval){    console.log(‘hi‘);  })  $scope.change=function(){    $scope.a++;  }})

 

  

  $watchCollection: 为对象或数组的属性添加浅监听,也就是只监听对象的一个层级

.controller(‘parent‘, function ($rootScope, $scope, $timeout) {

      $scope.one = {a: {aa: 1}};

      $scope.$watchCollection(‘one‘, function (newval, oldval) {

        console.log(‘hi‘);

      });

      $scope.change = function () {

        $scope.one.a.aa = 2; //不能监听到

        $scope.one.a = 3;  //可以监听

      }

    })

$apply,$digest

.controller(‘parent‘, function ($rootScope, $scope, $timeout) {

      $scope.a = 1;

      setTimeout(function () {

        $scope.$apply(function () {

          $scope.a++;

        })

      }, 3000)

     //或者直接使用digest

      setTimeout(function () {

        $scope.a++;

        $scope.$digest();

      }, 3000)

    })

angular.module(name, [requires], [configFn]):

  如: angular.module(myapp, [‘underscore‘], function($provide){ $provide.value ( ‘v1‘, ‘you‘ ) }) ;

  模块可以以任意顺序下载,因为它总是延迟执行,因此不必在意他们之间加载的先后顺序

angular.extend(dst,src):

  会影响原对象dst,并返回新对象,如果想保留原对象需要传入一个空对象angular.extend({},obj1,obj2)

angular.merge(dst,src):

  与angular.extend()唯一的不同就是支持循环扩展

angular.copy(src,dst):

  会先清空dst对象属性,然后复制src,如果src不是一个对象或值为null则直接返回一个空对象

  

时间: 2024-12-27 04:59:50

Angularjs API的相关文章

搭建angularjs API文档站点

提供一个国内可以访问的 angularjs API文档站点 http://i.frllk.com/ 文档直接在 github 上下载的: https://github.com/angular-cn/ng-docs-en 空间是万网赠送的 2年时间,本来也没有用处所幸共享出来当成api站点用 另外提供一个免FQ上Google的网站 http://www.glgoo.com 好了现在开始抒发我内心挤压已久的不满了. 墙! 墙! 墙 到处墙 你们到底有多少见不得光的事情.

【16】AngularJS&#160;API

AngularJS API API 意为 Application Programming Interface(应用程序编程接口). AngularJS 全局 API AngularJS 全局 API 用于执行常见任务的 JavaScript 函数集合,如: 比较对象 迭代对象 转换对象 全局 API 函数使用 angular 对象进行访问. 以下列出了一些通用的 API 函数: API 描述 angular.lowercase() 转换字符串为小写 angular.uppercase() 转换字

AngularJS API之$injector ---- 依赖注入

    阅读目录 推断式注入 标记式注入 内联式注入 $injector常用的方法 样例代码 在AngularJS中也有依赖注入的概念,像spring中的依赖注入,但是又有所不同.Spring中使用构造注入或者设值注入的方式,还需要做一些额外的操作,但是angular中只需要在需要的地方声明一下即可,类似模块的引用,因此十分方便.参考:[angular api doc] (http://docs.angularjs.cn/api/auto/service/$injector) 回到顶部 推断式注

AngularJS API之bootstrap启动

通过绑定来进行angular的初始化,会把js代码侵入到html中,但是对于新手使用来说,还是足够了! <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js&

AngularJS API之toJson 对象转为JSON

    阅读目录 方法讲解 样例参考 toJson()能把对象序列化为json 回到顶部 方法讲解 这个方法最多支持2个参数: angular.toJson(obj, pretty); obj 是想要转换的对象, pretty 可以调节格式化的样式,按照API的介绍这个是空格的个数.(不过在控制台,空格的个数是一样的,差别还在研究) 回到顶部 样例参考 <html> <head> <meta http-equiv="Content-Type" conten

AngularJS API之copy深拷贝

    阅读目录 使用时需要注意下面几点: 下面看看使用样例: angular提供了一个可以复制对象的api——copy(source,destination),它会对source对象执行深拷贝. 回到顶部 使用时需要注意下面几点: 如果只有一个参数(没有指定拷贝的对象),则返回一个拷贝对象 如果指定了destination,则会深拷贝对象复制给destination 如果source是null或者undefined,那么会直接返回source 如果source就是desitination,那么

AngularJS API之equal比较对象

    阅读目录 使用情况 样例 回到顶部 使用情况 1 首先,所有满足 a === 3 这种的对象,在angular.equals(a,b)中都会返回真 2 所有对象的类型,以及属性值都相同的,也会返回真 3 NaN和NaN也会返回真(在javascript中,返回的是假) 4 正则也会返回真(在javascirpt,/abc/ /abc/被认为是不相等的) 回到顶部 样例 <html> <head> <meta http-equiv="Content-Type&

我的第一篇博客随笔:关于angularjs API的理解心得。angular.bind() angular.boostrap()

angular.bind(obj,fun,args) obj:对象 fun:函数 arg:函数要传递的参数(可省略). 解释:将函数与对象动态绑定在一起 作用:实现调用数据模块化. demo:var Func = function(a){ this.a=a; } var obj=new Func(1); var fun=angular.bind(obj, function(i,j){alert(this.a+i+j)},4,2); fun();//7  var fun=angular.bind(

Angularjs基础(七)

AngularJS表单 AngularJS表单时输入控件的集合HTML控件 一下HTML input 元素被称为HTML 控件: input 元素 select元素 button元素 textarea元素 HTML 表单 AngularjS表单上实例 <div ng-app="myApp" ng-controller="formCtrl"> <from novalidate> First Name: <input type="