AngularJS 内置指令(二)

下面将要介绍的指令会以父级作用域为原型生成子作用域。这种继承的机制可以创建一个隔

离层,用来将需要协同工作的方法和数据模型对象放置在一起。

ng-app

和ng-controller是特殊的指令,因为它们会修改嵌套在它们内部的指令的作用域。

ng-app

为AngularJS应用创建$rootScope,ng-controller则会以$rootScope或另外一个

ng-controller

的作用域为原型创建新的子作用域。

1. 子作用域:

<!doctype html>
<html ng-app="myApp">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
</head>
<body>

  <div ng-controller="SomeCtrl">
    {{ someProperty }}
    <button ng-click="someAction()">Communicate</button>
  </div>

  <script>
    angular.module(‘myApp‘, [])
    .controller(‘SomeCtrl‘, function($scope) {
      $scope.someProperty = ‘hello computer‘;
      $scope.someAction = function() {
        $scope.someProperty = ‘hello human‘;
      };
    });
  </script>

</body>
</html>

内置指令

ng-controller的作用是为嵌套在其中的指令创建一个子作用域,避免将所有操作

模型都定义在$rootScope上。用这个指令可以在一个DOM元素上放置控制器。

ng-controller

接受一个参数expression,这个参数是必需的。

expression

参数是一个AngularJS表达式。

$scope只是一个JavaScript对象,其中含有从父级$scope中通过原型继承得到的方法和属

性,包括应用的

$rootScope。

嵌套在

ng-controller中的指令有访问新子$scope的权限,但是要牢记每个指令都应该遵守

的和作用域相关的规则。

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
</head>
<body>

    <div ng-controller="SomeCtrl">
        {{ someModel.someProperty }}
        <button ng-click="someAction()">Communicate</button>
    </div>

    <script>
        angular.module(‘myApp‘, [])
        .controller(‘SomeCtrl‘, function ($scope) {
            // create a model
            $scope.someModel = {
                // with a property
                someProperty: ‘hello computer‘
            }
            // set methods on the $scope itself
            $scope.someAction = function () {
                $scope.someModel.someProperty = ‘hello human‘;
            };
        });
    </script>

</body>
</html>

多个控制器:

 1 <!doctype html>
 2 <html ng-app="myApp">
 3 <head>
 4     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
 5 </head>
 6 <body>
 7
 8     <div ng-controller="SomeCtrl">
 9         {{ someBareValue }}
10         <button ng-click="someAction()">Communicate to child</button>
11         <div ng-controller="ChildCtrl">
12             {{ someBareValue }}
13             <button ng-click="childAction()">Communicate to parent</button>
14         </div>
15     </div>
16
17     <script>
18         angular.module(‘myApp‘, [])
19         .controller(‘SomeCtrl‘, function ($scope) {
20             // anti-pattern, bare value
21             $scope.someBareValue = ‘hello computer‘;
22             // set actions on $scope itself, this is okay
23             $scope.someAction = function () {
24                 $scope.someBareValue = ‘hello human, from parent‘;
25             };
26         })
27         .controller(‘ChildCtrl‘, function ($scope) {
28             $scope.childAction = function () {
29                 $scope.someBareValue = ‘hello human, from child‘;
30             };
31         });
32     </script>
33
34 </body>
35 </html>

嵌套控制器,会同步修改:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
</head>
<body>

    <div ng-controller="SomeCtrl">
        {{ someModel.someValue }}
        <button ng-click="someAction()">Communicate to child</button>
        <div ng-controller="ChildCtrl">
            {{ someModel.someValue }}
            <button ng-click="childAction()">Communicate to parent</button>
        </div>
    </div>

    <script>
        angular.module(‘myApp‘, [])
        .controller(‘SomeCtrl‘, function ($scope) {
            // best practice, always use a model
            $scope.someModel = {
                someValue: ‘hello computer‘
            }
            $scope.someAction = function () {
                $scope.someModel.someValue = ‘hello human, from parent‘;
            };
        })
        .controller(‘ChildCtrl‘, function ($scope) {
            $scope.childAction = function () {
                $scope.someModel.someValue = ‘hello human, from child‘;
            };
        });
    </script>

</body>
</html>
时间: 2024-10-14 07:22:59

AngularJS 内置指令(二)的相关文章

AngularJS内置指令集合

ng-model 将表单控件和当前作用域的属性进行绑定 代码如下: <input type="text" ng-model="someModel.someProperty" /><br>{{someModel.someProperty}} ng-init 该指令被调用时会初始化内部作用域.这个指令一般会出现在比较小的应用中,比如给个demo什么的... 代码如下: <div ng-init="job='fighter'&quo

AngularJS内置指令

内置指令 所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突.首先从一些常见的内置指令开始.先列出一些关键的内置指令,顺便简单说说作用域的问题. ng-model 将表单控件和当前作用域的属性进行绑定,这么解释似乎也不太正确.但先不要管咬文嚼字,用起来倒是易懂,例如: 代码如下: <input type="text" ng-model="someModel.someProperty" /><br>{{someModel.som

AngularJS内置指令 ng-xxx

指令,我将其理解为AngularJS操作HTML element的一种途径. 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生. 这篇日志简单记录了一些内置指令,先使用起来,再谈一些有趣的东西. 内置指令 所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突.首先从一些常见的内置指令开始.先列出一些关键的内置指令,顺便简单说说作用域的问题. ng-model 将表单控件和当前作用域的属性进行绑定,这么解释似乎也不太正确.但先

AngularJs 内置指令

林炳文Evankaka原创作品.出处http://blog.csdn.net/evankaka       本教程使用AngularJS版本:1.5.3      AngularJs GitHub: https://github.com/angular/angular.js/     AngularJs下载地址:https://angularjs.org/ 摘要:本文主要介绍了AngularJs中自带的指令 1.ng-model 这个大家都非常熟悉了,就是将表单控件和当前作用域的属性进行绑定.需

angular指令(二)--内置指令

一.基础ng 属性指令: ? ng-href? ng-src? ng-disabled? ng-checked? ng-readonly? ng-selected? ng-class? ng-style 布尔属性的有: ng-disabled.ng-readonly.ng-checked.ng-selected 类布尔属性有: ng-href.ng-src 二.在指令中使用子作用域 ? ng-app ? ng-controller ? ng-include 使用ng-include可以加载.编译

AngularJS中的内置指令

AngularJS可以把模版编写成HTML的形式,利用指令来拓展HTML标签,增加声明式语法来实现想做的任何事情.AngularJS的内置指令包括渲染指令.事件指令和节点指令. 渲染指令 ng-bind: <p ng-bind="something"></p> 相当于: <p>{{something}}</p> ng-bind-template: 如果用ng-bind-template,则相当于: <p ng-bind-templa

Angular内置指令

以ng前缀开头的都是内置指令,因此不要以ng开头命名自定义指令.此外还有其他内置指令在标签中不易发现,如<a>和<form>. 一,布尔属性 1  ng-disabled 可以在input,textarea,select,button绑定 例一:按钮一直禁用,直到用户在文本字段中输入内容 <input type="text" ng-model="someProperty" placeholder="TypetoEnable&q

Angular中的内置指令和自定义指令

NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减少DOM操作,实现数据绑定,与业务逻辑进行交互. How: 指令主要分为两种:内置指令和自定义指令,通过下面的例子,简单记录一下如何去使用. 内置指令 在官方API文档上罗列了很多指令,内置指令可以分为:普通指令 和 事件指令,他们都是作用于HTML之上的,通过添加属性的方式来实现的.简单看一下一些

vue内置指令与自定义指令

一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例如:v-on:click  v-on:keyup 3.v-model:数据双向绑定:用于表单输入等:例如:<input v-model="message"> 4.v-show:条件渲染指令,为DOM设置css的style属性 5.v-if:条件渲染指令,动态在DOM内添加或删除