ng-bind和{{}}插值法

引言

今天调bug的时候遇到了一个问题,就是有的时候加载出来的数据没有数据的时候出现的是{{TeacherName}},一看这个不是我在页面上绑的值吗?怎么这样就显示出来了呢……

针对这个问题,想起来了AngularJS中的单向绑定,所以本文简单介绍一下{{}}插值法和ng-bind指令的绑定方法。

Demo

首先我们先来看一个Demo:

[html] view plain copy print?

  1. <span style="font-size:18px;"><!DOCTYPE html>
  2. <html ng-app>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ng-bind directive</title>
  6. </head>
  7. <body ng-controller="HelloController">
  8. <div>
  9. <p>直接输出字符串字面值</p>
  10. Hello {{"World"}}
  11. <hr>
  12. </div>
  13. <div>
  14. <p>使用占位符输出变量</p>
  15. Hello {{greeting}}
  16. <hr>
  17. </div>
  18. <div>
  19. <p>使用ng-bind指令输出变量</p>
  20. Hello <span ng-bind="greeting"></span>
  21. <hr>
  22. </div>
  23. <script src="angular-1.3.0.js"></script>
  24. <script>
  25. function HelloController($scope) {
  26. $scope.greeting = "World";
  27. }
  28. </script>
  29. </body>
  30. </html>
  31. </span>

效果

分析

从以上代码和执行效果上我们可以看出:

1、  我们可以直接在页面上写上要输出的值,这样程序可以直接读取显示在页面上。

2、  使用{{}}和使用ng-bind指令绑定数据都是对数据的单向绑定。

3、  使用ng-bind指令和{{}}都是因为在controller中设置了一个变量greeting,当angularjs编译到这的时候会去找到这个变量,然后输出相应的值。

{{}}和ng-bind指令的不同点

两种方法其实是一样的效果,只不过Angularjs通常第一个加载的页面是index.html,当使用{{}}语法的时候,其未被渲染的模板可能会被用户看到。就是出现我在开始说的问题。所以对于这样现象,我们建议使用ng-bind方法绑定数据,这样在数据加载完成之前用户就不会看到任何内容。

总结

许多知识都是我们在用的时候才能更好的去体会,之前虽然知道ng-bind指令和{{}}语法,但是没有深刻的体会过,直到遇到bug……看来bug才是我们成长的阶梯呀!!

时间: 2024-10-12 14:20:18

ng-bind和{{}}插值法的相关文章

Scope Directive

---------------------------Scope-------------------------------- https://docs.angularjs.org/guide/scope What are Scopes? Scope is an object that refers to the application model. It is an execution context for expressions. Scopes are arranged in hiera

Angular JS 作用域和数据绑定

作用域 作用域($scope)和应用的数据模型相关联的,同时作用域也是表达式执行的上下文.$scope对象是定义应用业务逻辑.控制器方法和视图属性的地方. 作用域是视图和控制器之间的胶水.在应用将视图渲染并呈献给用户之前,视图中的模板会和作用域进行连接,然后应用会对DOM进行设置以便将属性变化通知给AngularJS. 基于动态绑定,我们在修改视图数据时立刻更新$scope,而$scope发生变化时也会立刻渲染视图. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

angular学习(十二)—— Directive

directive介绍 directive是DOM元素上的标记,告诉angularjs的HTML编译器($complile)给DOM元素附加上一些特殊的行为,或者是改变DOM元素和它的子元素. 看到编译两个字,很多人会感到很懵,javascript不是解释执行的吗.其实这里的编译是因为,给html附加directive的递归过程很像是编译源代码的过程,所以才叫编译. angularjs内置了一套directive,像ngBind, ngModel和ngClass.就像你创建controller和

ASP.NET MVC4+BootStrap 实战(六)

最近面试了一个西安电子科技大学刚毕业的,不是计算机系毕业,却喜欢编程.除了书本上的知识以外,其他一窍不通,笔试题答得不错.经验欠佳,编程也只懂书本上的一些例子.本来不打算录用,但是后来聊到高等数学和物理是她学的最好的两门,那必须收下.人家都说了能考上西电,就能证明她的学习能力,我和项目经理也就相信人家了.毕竟当年面试的时候我面试的是南京擎天科技,有个西电的面试的是南京联创,人家和我聊了两句,得知我是二本院校的,人家说了句他同学面试的都是腾讯,阿里,百度,新浪,说完直接放弃面试,我去南京擎天还害怕

【转载】AngularJs 指令directive之controller,link,compile

关于自定义指令的命名,你可以随便怎么起名字都行,官方是推荐用[命名空间-指令名称]这样的方式,像ng-controller.不过你可千万不要用 ng-前缀了,防止与系统自带的指令重名.另外一个需知道的地方,指令命名时用驼峰规则,使用时用-分割各单词.如:定义myDirective,使用时 像这样:<my-directive>. 这里列出directive的合法命名: ng:bind ng-bind ng_bind x-ng-bind data-ng-bind 我是教师,在新建试题输入分数的时候

【转】AngularJS——自定义指令

原文链接:http://www.html-js.com/article/1561 创建自定义指令 这是一篇译文,来自angular开发者说明的指令.主要面向已经熟悉angular开发基础的开发者.这篇文档解释了什么情况下需要创建自己的指令,和如何去创建指令. 什么是指令 从一个高的层面来讲,指令是angular $compile服务的说明,当特定的标签(属性,元素名,或者注释) 出现在DOM中的时候,它让编译器附加指定的行为到DOM上. 这个过程是很简单的.angular内部有很用这样自带的指令

angularJS学习笔记(二)

前言 首先,了解 一下ng的一些概念: module 代码的组织单元,其它东西都是定义在具体的模块中的. app 应用业务,需要多个模块的配合完成. service 仅在数据层面实现特定业务功能的代码封装 controller 与DOM结构相关联的东西,即是一种业务封装概念,又体现了项目组织的层级结构 filter 改变数据的一种机制 directive 与DOM结构相关联,特定功能的封装形式 上面的这些概念基本上就是ng的全部.每一部分都可以自由定义,使用时通过各种要素的相互配合来实现我们的业

[转载]AngularJS学习笔记

http://www.zouyesheng.com/angular.html 关于AngularJS 关于本文档 开始的例子 依赖注入 作用域 数据绑定与模板 6.1. 数据->模板 6.2. 模板->数据 6.3. 数据->模板->数据->模板 模板 7.1. 定义模板内容 7.2. 内容渲染控制 7.3. 节点控制 7.4. 事件绑定 7.5. 表单控件 模板中的过滤器 8.1. 排序 orderBy 8.2. 过滤列表 filter 8.3. 其它 8.4. 例子:表头

angular 表达式与指令

angular表达式的一些特点 属性表达式: 属性表达式是对应于当前作用域,Javascript对应的是全局window对象. AngularJS要使用window作用域的话得用$window来指向全局window对象. 比如说,你使用window中定义的alert()方法,在AngularJS表达式中必须写成$window.alert()才行 允许未定义值 执行表达式时,AngularJS能够允许undefined或者null,不像Javascript会抛出一个异常 不能在AngularJS表

AngularJS开发指南4:指令的详解

指令是我们用来扩展浏览器能力的技术之一.在DOM编译期间,和HTML元素关联着的指令会被检测到,并且被执行.这使得指令可以为DOM指定行为,或者改变它. AngularJS有一套完整的.可扩展的.用来帮助web应用开发的指令集,它使得HTML可以转变成“特定领域语言(DSL)”. 指令可以做为HTML中的元素名,属性名,类名,或者注释.下面是一些等效调用myDir指令的例子: <span my-dir="exp"></span> <span class=&