AngularJS基础 神奇的数据绑定(Binding)

作者:arccosxy  转载请注明出处:http://www.cnblogs.com/arccosxy/

上一节,我们在JS中声明一个scope变量然后在HTML直接访问它,这非常的酷。但是AngularJS能够提供更多神奇好玩的东西。数据绑定(data binding)就是其中一个很重要的主题,接下来我会介绍数据绑定最重要的部分,学习完你将理解它的用途。

为了理解它的概念,声明一个scope变量作为model(先不用管model,以后再说)。修改maincontroller.js如下:

app.controller("MainController", function($scope){
    $scope.inputValue = "";
});

在我们的页面中增加一些HTML代码:

<!DOCTYPE html>
<head>
    <title>Learning AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <script src="maincontroller.js" type="text/javascript"></script>
</head>
<body>
    <div id=‘content‘ ng-app=‘MyTutorialApp‘ ng-controller=‘MainController‘>
            <input type=‘text‘ ng-model="inputValue">
            {{inputValue}}
    </div>
</body>
</html>

在以上代码中我们增加一个简单的文本输入框,并使用ng-model将它绑定scope变量inputValue。注意我们在ng-*标签中没有用{{}}包裹inputValue。此外我们将scope变量inputValue输出到页面上。

以上的所做的这些使我们绑定了输入的值到scope变量。这意味着无论何时输入值发生了变化,绑定的scope变量将同时被更新。在浏览器中打开我们的页面,在输入框中随意输入一些东西,你将会看到类似下面的情况:

当你输入值得时候,scope变量实时地更新,这一点可以直观地在屏幕上看到,相当神奇!现在你已经学会了将变化的元素和值在同一个页面上同步的方法了。下面我们将转到一个更复杂一点的例子上,以便你更好地理解到底数据绑定能做什么。更新maincontroller.js如下:

app.controller("MainController", function($scope){
    $scope.selectedPerson = 0;
    $scope.selectedGenre = null;
    $scope.people = [
        {
            id: 0,
            name: ‘Leon‘,
            music: [
                ‘Rock‘,
                ‘Metal‘,
                ‘Dubstep‘,
                ‘Electro‘
            ]
        },
        {
            id: 1,
            name: ‘Chris‘,
            music: [
                ‘Indie‘,
                ‘Drumstep‘,
                ‘Dubstep‘,
                ‘Electro‘
            ]
        },
        {
            id: 2,
            name: ‘Harry‘,
            music: [
                ‘Rock‘,
                ‘Metal‘,
                ‘Thrash Metal‘,
                ‘Heavy Metal‘
            ]
        },
        {
            id: 3,
            name: ‘Allyce‘,
            music: [
                ‘Pop‘,
                ‘RnB‘,
                ‘Hip Hop‘
            ]
        }
    ];
});

我们声明了三个scope变量,selectedPerson用来记录被选中的人员对象。selectedGenre用来记录音乐的流派。最后我们用了一个对象数组记录人们的音乐品味。我们将实现两个下拉选择框。一个选择人员,另外一个由于绑定会自动的更新来供你选择这个人的音乐流派。在页面中增加HTML元素如下:

<!DOCTYPE html>
<head>
    <title>Learning AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <script src="maincontroller.js" type="text/javascript"></script>
</head>
<body>
    <div id=‘content‘ ng-app=‘MyTutorialApp‘ ng-controller=‘MainController‘>
        <select ng-model=‘selectedPerson‘ ng-options=‘obj.name for obj in people‘></select>
        <select ng-model=‘selectedGenre‘>
            <option ng-repeat=‘label in people[selectedPerson.id].music‘>{{label}}</option>
        </select>
    </div>
</body>
</html>

这里有一些新的东西。首先,我们加入了一个用ng-options标签的选择输入框,这允许我们可以用people scope变量的值来填充这个选择输入框,这里使用person对象的name属性作为选择输入框的标签。

第二个选择输入框以一种不同的方式填充。“ng-repeat”在我看来是AngularJS中一个强大的特性。ng-repeat允许你基于数组或者对象集合重复HTML元素。在上面的HTML中,ng-repeat将基于selectedPersons ID值为people中的每个音乐流派创建一个选项,selectedPersons ID值是由第一个选择输入框的选择决定的。

注意:ng-repeat可以用于任何的HTML元素,可以自己试一下。

在option标签里的{{label}}用来输出ng-repeat选项里声明的label。打开浏览器试一试吧。效果如下:

时间: 2024-11-05 14:02:59

AngularJS基础 神奇的数据绑定(Binding)的相关文章

AngularJS基础知识1

一.angularJS简介 1.什么是 AngularJS? AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库.AngularJS是协助搭建单页面工程的开源前端框架.它通过MVC模式使得开发与测试变得更容易.AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中: <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angula

转: angularjs基础教程(~~较通俗)

Angularjs-基础教程(1) 很久没有写过东西了,感觉写东西都不知道从哪里开始了,现在还是先写点技术性的吧,angularjs--我兄弟把它叫成“俺哥啦js” 1.下载 官方网址:https://angularjs.org/ CDN:https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.5/angular.min.js 2.简单介绍使用 1.ng-app   ~~~angularjs的渲染范围 决定了angularjs的作用域

AngularJS基础知识

AngularJS基础知识 --2015.06.28 1.     AngularJS是什么? Angular官网:https://angularjs.org/ ,API: http://docs.angularjs.org/api AngularJS是一个MV*(Model-View-Whatever, 不管是MVC或者MVVM,统称为MDV(Model Drive View))的JavaScript框架,是Google推出的SPA(single-page-application, 单页面应用

AngularJS基础01 从HelloWorld说起

作者:arccosxy  转载请注明出处:http://www.cnblogs.com/arccosxy/ 准备工作 首先,创建一个名为index.html的HTML文件,代码如下: <!DOCTYPE html> <head> <title>Learning AngularJS</title> </head> <body> </body> </html> 接下来就是加载angular.js库,访问https:

AngularJS基础

首先,AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中: <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script> AngularJS 通过 ng-directives 扩展了 HTML. ng-a

03基础-AngularJS基础教程

0. 目录 目录 前言 正文 1 Set up 2 表达式 3 指令 ng-bind ng-init ng-non-bindable ng-show 4 作用域 双向绑定Two-way binding ng-model 5 总结 声明 1. 前言 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了,所以AngularJS做了一些工作来来解决静态网页技术在构建动态应用上的不足. AngularJS

AngularJs最佳实践二----数据绑定

在我们传统的web框架中,如Rails,Controller混合了来自model的数据并且糅合在模板里成为一个view呈现给用户.这种混合风格会导致single-way-view.视图只能反映在视图呈现的时候的model数据.当然也有写框架有望实现视图和模型的自动数据绑定. AngularJs 采用了一种不同方式,即不是将数据混入模板然后替换Dom元素.AngularJs创建live模板作为视图.视图的独立组件被动态内插值替换,这个特征可能是AngularJs最重要的一个使得我们不用写一行Jav

AngularJs基础总结(1.4版本)

注明:现在用的是最新的1系列1.4版本. 一.细节方面入手: 1,ng-app根节点,一般别写在html上面,最多也就写在body就行了,因为我们难免会忘记这个写在哪里,然后复制一些案例代码却总报错. <!DOCTYPE html> <html> <head> <title>基础入门</title> <meta http-equiv="content-type" content="text/html; char

angularJS 基础回顾

div#cpmenu {height:200px;float:left;} div#cpcontent {height:200px;width:150px;float:left;} 文章作者:松阳 原文链接:http://blog.csdn.net/fansongy/article/details/44106207 数据 "I'm string" 123 {A:"I'm",B:"Dictory"} {"I","am&