0%

AngularJS中在处理controller时提供了两种语法。

  • 第一种是,在DOM中使用ng-controller="TestController",这样在定义controller时需要将model绑定到$scope上。
  • 另一种是,在DOM中使用ng-controller="TestController as test",这样其实是将model直接绑定到controller的实例上。

在AngularJS的官方Get Started以及各种文档中,多推荐第一种方式,导致很多人可能都不知道原来还有第二种方式,我也是最近看一篇文章时才注意到这个。那么这两种方式各有什么优劣势呢?在现实的开发中到底更推荐哪种方式呢?今天就来探究一下!

阅读全文 »

tabindex 属性用于管理键盘焦点,决定元素是否能被选中,以及按下 tab 键过程中被选中的顺序,使用得当能够极大的提高应用的易用性,然而,不恰当地使用时可以键盘用户对应用的可用性。到底如何使用?设置为 0 会有什么效果?设置为 -1 会有什么效果?本文将为你揭晓。

阅读全文 »

delete 操作符用于删除对象的属性。

似乎很多同学(包括我)对 delete 操作符都是似是而非,为什么有的属性可以被删除,有的却不能被删除?为什么能够删除对象的属性却不能删除变量或函数?在 eval 和 严格模式下,delete 操作符又有哪些特性?等等。。

本文将从基本概念到 ECMPScript 内部原理来学习 delete 操作符。

语法

表达式

1
2
delete object.property    // 点操作符方式,常用方式
delete object['property'] // 字符串属性名方式

参数

  • object - 对象名称,或者返回一个对象的表达式
  • property - 将要删除的属性

返回值

delete 操作符返回 true 或 false。当被 delete 的对象的属性存在并且拥有 DontDelete (对象属性的一个内部属性,拥有该内部属性表明该属性不能被删除) 时返回 false(在严格模式下将抛出异常),否则返回 true。需要注意的是,对象属性不存在时也返回 true,所以返回值并非完全等同于删除成功与否

阅读全文 »

相信大家写过AngularJS的都会发现,很多人在处理表单的数据绑定时,都习惯性的把ng-model绑定在$scope的一个对象属性上,而不是直接绑定在scope上。比如说使用<input name="name" ng-model="data.name" />而不是<input name="name" ng-model="name" />。这是为什么呢?这样在controller里面岂不是写起来更复杂吗?每次访问的时候都要多“点”一下,为什么不直接绑在$scope上呢?其实这样写自然是有它的好处的,而且这种写法也是推荐的最佳实践,尤其是在处理嵌套scope的情形下,这样写是很有必要的。为了弄清楚这么写的原因,我们需要深入的研究一下AngularJS里scope的继承。

阅读全文 »