AngularJs angular.bind、angular.bootstrap、angular.copy

简介: angular.bind 返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能。 格式:angular.bind(self,fn,args); self:object  对象; fn的上下文对象,在fn中可以用t...

angular.bind

返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能。

格式:angular.bind(self,fn,args);

self:object  对象; fn的上下文对象,在fn中可以用this调用

fn:function; 绑定的方法

args:传入fn的参数

使用代码: 

var obj = { name: "Any" };
var fn = function (Adj) {
      console.log(this.name + "is a boy!!! And he is " + Adj + " !!!");
   };
var f = angular.bind(obj, fn, "handsome");
f();//Any is a boy!!! And he is handsome!!!
var t = angular.bind(obj, fn);
t("ugly");// Any is a boy!!! And he is ugly!!!

bind顾名思义绑定的意思,那么假如我们要把A绑到B上,那么必须又有绑定的东西和被绑定的东西。这里需要的就一个对象和一个函数。那么怎么绑?本兽的理解是把对象“绑”到函数的this上去执行,这时候fn的this就等于obj了,至于第三个参数,可有可无,看需求,如果函数需要传入参数,那么我们可以把angular.bind的第三个参数放上去,这就是传入fn函数的参数了。

案例中第一种写法是定义绑定的时候就把fn所需的参数传进去了,调用的时候直接用,而案例中第二种写法是先绑定,在调用执行的时候再给fn传参,效果是一样的...

angular.bootstrap

使用这个功能来手动启动angular应用。基于ngScenario的端对端测试不能使用bootstrap手动启动,需要使用ngApp.

Angular会检测应用在浏览器是否已启动并且只允许第一次的启动,随后的每次启动都将会导致浏览器控制台报错.

这可以防止应用出现多个Angular实例尝试在Dom上运行的一些奇异结果.

格式:angular.bootstrap(element,[modules]);

element:Dom元素,angular应用启动的根节点

modules:数组,angular的应用程序模块

使用代码:

  <div id="ngApp">
     <div ng-controller="testCtrl as ctrl">
         {{ctrl.value}}
     </div>
  </div>
  (function () {
      angular.module("Demo", [])
      .controller("testCtrl", testCtrl);
      function testCtrl() {
          this.value = "Hello World";
      }
      angular.bootstrap(document.getElementById("ngApp"), ["Demo"]);
  }());

一般来说,我们写ng程序,都会在页面Dom元素上写ngApp指令用来启动Angular程序,但是也可能出现一些特殊情况需要我们在启动之前干些什么或者需要我们手动启动应用程序,这时候angular.bootstrap就派的上用场了。

angular.copy

针对对象或数字创建一个深层的拷贝。

格式:angular.copy(source, [destination]);

source:被拷贝的对象

destination:接收的对象 [注意:参数类型是对象或数组]

使用代码:

var objA, objD = []; //objA:undefined objD:[]
var objB = { text: "Hello World" };
var objC = {text:"Hai",value:"Test"};
objA = angular.copy(objB); // objA:{ text:"Hello World"} objB:{ text:"Hello World"}
angular.copy(objC, objD);// objC:{text: "Hai", value: "Test"} objD:[text: "Hai", value: "Test"]

本兽对Angular API 逐个的学习并且进行翻译,然后写能运行成功的代码,并把学习过程进行整理记录及分享... 

相关文章
|
前端开发
Angular7 关于Bootstrap4.x.x版本无法使用Glyphicons 字体图标 简单解决方案
Angular7 关于Bootstrap4.x.x版本无法使用Glyphicons 字体图标 简单解决方案
112 0
Angular7 关于Bootstrap4.x.x版本无法使用Glyphicons 字体图标 简单解决方案
|
前端开发
angular-cli 使用 bootstrap_angular 4.0 怎样使用 bootstrap
转载自  http://www.ngui.cc/index.html angular 使用bootstrap ngx-bootstrap  文档地址  http://ngx-bootstrap.
1051 0
|
前端开发
Angular开发 使用 ngx-bootstrap作为样式库
ngx-bootstrap里面可以复制你想要的样式组件,官方有介绍怎么使用,不过本人稍微修改了下 使用ngx-bootstrap的步骤 1、npm install ngx-bootstrap –save 2、npm install bootstarap –save-dev 3、在angular-cli.
1705 0
|
前端开发 JavaScript
Angular UI ngx-bootstrap 使用说明
序言:   ngx-bootstrap包含了由Angular提供支持的所有核心的Bootstrap组件。我们可以直接通过命令行安装后使用,同时使用该系列的组件不需要包含原始的JS组件。
1883 0
|
JavaScript 前端开发
【曹操】 angular js双向绑定数据通过bootstrap请求获取不到表单数据
在做项目的时候,在VidyoCallFlowEntry页面中,通过name字段双击跳转弹出VidyoCallFlow页面,同时传入name的值作为参数进行查询,并展示查询结果。但在路由中获取到name的值,通过angular js双向绑定的方式赋值给VidyoCallFlow页面的vidyoname的值,发现并没有查询到结果,但是根据该name的值在数据库中查询,是有结果的。
1510 0
|
JavaScript 前端开发 API
|
Web App开发 前端开发 JavaScript
如何在Angular 2项目中使用Bootstrap css库
https://gxnotes.com/article/44391.html 如果您使用Angular-CLI来生成新的项目,那么还有另一种方法可以在角度2/4中使用引导。
1516 0
|
前端开发 JavaScript CDN
Angularjs + Bootstrap 制作的一个TODO List
看了一个关于Angularjs的视频,视频内容讲解的是如何制作一款TODO list形式的SPA(Simple Page Application,单页面应用)。为了增强理解,下面写了一篇文章,用以复习巩固。
1643 0