首页 > 代码库 > 【前端】牛客练题积累——AngularJS

【前端】牛客练题积累——AngularJS

 

AngularJS方面:

每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部的Controller提供的作用域或者根作用域($rootScope)),还是创建一个新的自己的作用域,当然AngularJS为我们指令的scope参数提供了三种选择,分别是:false,true,{};默认情况下是false

当把scope属性设置为true时,这表明我们创建的指令要创建一个新的作用域,这个作用域继承自我们的父作用域。

当我们将scope设置为false的时候,我们创建的指令和父作用域(其实是同一个作用域)共享同一个model模型,所以在指令中修改模型数据,它会反映到父作用域的模型中。

scope:{}这个属性会创建一个独立的作用域,而且也不会继承父作用域.

注:在子scope中,使用$parent.parentScopeProperty。这将阻止子scope创建它自己的属性,可以直接修改父作用域的属性。

 

 

编译三阶段:
1. 标准浏览器API转化
将html转化成dom,所以自定义的html标签必须符合html的格式
2. Angular compile(绑定dom)
搜索匹配directive,按照priority排序,并执行directive上的compile方法
3. Angular link(数据绑定)
执行directive上的link方法,进行scope绑定及事件绑定

 

angular js中control间通信最好使用广播的方式

 

发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data);

接收消息: $scope.$on(name,function(event,data){ });

区别: $emit 广播给父controller   $broadcast 广播给子controller

broadcast 是从发送者向他的子scope广播一个事件。

$emit 广播给父controller,父controller 是可以收到消息

$on 有两个参数function(event,msg)  第一个参数是事件对象,第二个参数是接收到消息信息

 

then()方法返回一个Promise。它有两个参数,分别为Promise在 success 和 failure 情况下的回调函数。 p.then(function(value) {   // 满足  }, function(reason) {  // 拒绝});

promise模式在任何时刻都处于以下三种状态之一:未完成(unfulfilled)、已完成(resolved)和拒绝(rejected)。

【前端】牛客练题积累——AngularJS