发表于: 2020-01-07 22:12:40

1 1355


今日完成:


1.angular的核心思想是什么?怎么体现在代码里? 

AngularJS的四个核心思想

1)MVC

M代表model,对应的是数据库

V代表view,视图,对应的是html页面

C代表controller,控制器,处理用户交互的部分

2)依赖注入

3)模块化

4)双向绑定


2.angular之中,$state $watch $scope $rootScope 分别是什么? 

1、$scope——Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。Scope 是一个对象,有可用的方法和属性。 Scope 可应用在视图和控制器上。$scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文。 有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 $scope, 同样的 $scope发生改变时也会立刻重新渲染视图。

 2、$rootscope——每一个Angular应用都会有一个 $rootScope。这个 $rootScope 是最顶级的scope,它对应着含有 ng-app 指令属性的那个DOM元素。 如果页面上没有明确设定 $scope ,Angular 就会把数据和函数都绑定到这里。Angular 应用启动并生成视图时,会将根 ng-app 元素与 $rootScope 进行绑定.$rootScope 是所有 $scope 的最上层对象, 可以理解为一个 Angular 应用中得全局作用域对象。

3、$scope 的生命周期有4个阶段:

(1)创建:控制器或者指令创建时, Angular 会使用 $injector 创建一个新的作用域,然后在控制器或指令运行时,将作用域传递进去。

(2)链接:Angular 启动后会将所有 $scope 对象附加或者说链接到视图上,所有创建 $scope 对象的函数也会被附加到视图上。 这些作用域将会注册当 Angular 上下文发生变化时需要运行的函数.也就是 $watch 函数, Angular 通过这些函数或者何时开始事件循环。

(3)更新:一旦事件循环开始运行,就会开始执行自己的脏值检测.一旦检测到变化,就会触发 $scope 上指定的回调函数。

(4)销毁:通常来讲如果一个 $scope 在视图中不再需要, 需要对其进行清理。

4、$watch——相信使用过angularjs的同学都知道,ng中有个比较重要的特点,叫做双向绑定,那么这个双向绑定是如何实现的呢? 当我们在对绑定的name属性进行修改的时候,angular内部的$digest循环级会执行一次, 他执行的内容是检查我们的 $scope作用域的内容与上次执行$digest循环的时候是否有变化,若有变化就执行$watch()方法绑定的处理函数。 从而 达到了监听作用域属性的效果。

5、$watch(watchExpression, listener, objectEquality);

watchExpression,需要监控的表达式;

listener,处理函数,函数参数如下 function(newValue,oldValue, scope);

objectEquality,是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它。

6、$state——在ajax技术发展普及之后,因为其不会留下历史记录方便浏览器访问和对于seo不友好的特点,一个新技术应运而生: 路由,$state就是路由中的一项服务。

7、$state.go()——$state.go()方法可以产生与a链接一样的效果,可以将此方法绑定给一个button按钮, 然后在按钮的点击事件中执行 $state.go(),就可以跳转到相应的页面。

8、$stateparams——$stateParams是一个对象,包含 url 中每个参数的键/值。$stateParams可以为控制器或者服务提供 url 的各个部分。 注意:$stateParams必须与一个控制器相关,并且$stateParams中的“键/值”也必须事先在那个控制器的url属性中有定义。



3.angualr控制器是什么? 

控制器在AngularJS中的作用是增强视图。

AngularJS中的控制器是一个函数,用来向视图的作用域中添加额外的功能。我们用它来给

作用域对象设置初始状态,并添加自定义行为。

当我们在页面上创建一个新的控制器时,AngularJS会生成并传递一个新的 $scope 给这个控

制器。可以在这个控制器里初始化 $scope 。由于AngularJS会负责处理控制器的实例化过程,我

们只需编写构造函数即可。



 


 



返回列表 返回列表
评论

    分享到