$scope
controller控制器唯一
$scope在angularjs中,你可以把它理解成作用域(其实就是存储数据的地方),很类似javascript的原型链 。
每个不同的controller,都具有它不同的作用域,所以 controller不同,他们的scope是不同的,
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:
{{carname}}
当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如:
{{carname}}
如果我们需要一个全局变量该怎么办呢?这就要说 到rootScope了。
$rootScope
module模块唯一
$rootScope是由angularJS加载模块的时候自动创建的。(更准确的来说,$rootScope是由angularJS的核心模块ng创建的。)
rootScope创建好后,会以服务的形式加入到 $injector中。也就是说通过 $injector.get(“$ rootScope “);能够获取到某个模块的根作用域。
$rootScope就相当于一个全局作用域,所以我们保存在其中的东西是全局性的,在任一controller之中都能够使用。
$scope vs $rootScope
scope是html和单个controller之间的桥梁,数据绑定就靠他了。
rootscope是各个controller中scope的桥梁。 用rootscope定义的值,可以在各个controller中使用。
$watch
当我们在创建出scope下的一个新属性的时候,ng就会主动为我们新属性加上$watch这个方法,这个方法会监听我们 的数据变化,当数据变化之后,就立即把view和scope上数据同步。这个过程就称为“双向绑定”。
$state
$stateParams
$stateParams是一个对象,包含 url 中每个参数的键/值。$stateParams可以为控制器或者服务提供 url 的各个部分。 注意:$stateParams必须与一个控制器相关,并且$stateParams中的“键/值”也必须事先在那个控制器的url属性中有定义。