ngBind ngBindTemplate ngBindHtml
ng-bind: 只能绑定一个变量
在AngularJS中显示模型中的数据有两种方式:
一种是使用花括号插值的方式:
<p>{{titleStr}}</p>
另一种是使用基于属性的指令,叫做ng-bind:
<p><span ng-bind="titleStr"></span></p>
ng-bind-template: 可绑定多个变量
<p ng-bind-template="{{titleStr}}&&{{titleStr2}}"></p>
$scope.titleStr = "angularjs中的title";
$scope.titleStr2 = "title";
输出结果:
ngBindTemplate(ng-bind-template)与ngBind不同之处在于:ngBind只能单个绑定变量,且变量无需使用双括号“{{}}”,而ngBindTemplate则可以绑定一个模板,模板中可以包含多个AngularJS的表达式:“{{expression}}”。
ng-bind-html:
<p ng-bind-html="titleHtml"></p>
angular.module('myApp',[])
.controller('myCtrl',['$scope',function($scope){
$scope.titleHtml = "<h2>title</h2>";
}]);
上面这ng-bind-html写法不能将titleHtml显示出来,在控制台中会报如下错误:
https://docs.angularjs.org/error/$sce/unsafe 点开此链接,会给出错误的原因及解决方法;
ngBindHtml(ng-bind-html)可以将一个字符串以安全的方式插入到页面中并显示成Html。
ngBindHtml将强制使用angular-santitize服务进行安全检查,由于并非包含在AngualrJS核心库中,因此需要引入angular-santitize.js文件,并在定义ngModule时添加对于ngSantitize的依赖声明。
解决方法一:
1、引入angular-santitize.js文件
2、将ngSanitize注入到module中
代码如下:
<script src="../angular-sanitize.min.js"></script>
<script>
angular.module('myApp',['ngSanitize']) <!--将ngSanitize注入到module中-->
.controller('myCtrl',['$scope',function($scope){
$scope.titleHtml = "<h2>title</h2>";
}]);
</script>
参考:http://www.tuicool.com/articles/Q7VNJj
解决方法二:
使用$sce服务,将$sce服务注入到controller中,再使用$sce的trustAsHtml方法
不需要引入额外的js文件,只需要将$sce服务注入到controller即可:
angular.module('myApp',[])
.controller('myCtrl',['$scope','$sce',function($scope,$sce){
$scope.titleHtml = $sce.trustAsHtml("<h2>title</h2>");
}]);
ngBind ngBindTemplate ngBindHtml的更多相关文章
- ngBind {{}} ngBindTemplate
1.首先我们最常使用的一个绑定表达式的指令是ngBind,比如在一个div标签中我们可以这样使用: <div ng-bind="vm.info"></div> ...
- AngularJs ngApp、ngBind、ngBindHtml、ngNonBindable
ngApp 使用这个指令自动启动一个AngularJS应用.ngApp指令指定了应用程序的根节点,通常会将ngApp放置在网页的根节点如<body>或<html >标签的. 格 ...
- Angular - - ngApp、ngBind、ngBindHtml、ngNonBindable
对于ng-系列的指令,每篇文章写2-5个吧,不然显得文章好短.... ngApp 使用这个指令自动启动一个AngularJS应用.ngApp指令指定了应用程序的根节点,通常会将ngApp放置在网页的根 ...
- {{ }} 和ng-bind
花括号最后会转换成ng-bind,在一次加载数据的时候,显示花括号,所以使用ng-bind 或者ng-bind-html
- AngularJS 源码分析1
AngularJS简介 angularjs 是google出品的一款MVVM前端框架,包含一个精简的类jquery库,创新的开发了以指令的方式来组件化前端开发,可以去它的官网看看,请戳这里 再贴上一个 ...
- angular源码分析:angular的整个加载流程
在前面,我们讲了angular的目录结构.JQLite以及依赖注入的实现,在这一期中我们将重点分析angular的整个框架的加载流程. 一.从源代码的编译顺序开始 下面是我们在目录结构哪一期理出的an ...
- Angular源代码学习笔记-原创
时间:2014年12月15日 14:15:10 /** * @license AngularJS v1.3.0-beta.15 * (c) 2010-2014 Google, Inc. http:// ...
- AngularJS1.X学习笔记2-数据绑定
上一篇从整体上认识了Angular,从现在开始更加深入的学习Angular的特性.本次学习的是数据绑定.应该所有的MVC框架都会用到数据绑定,比如我所知道的ThinkPHP.struts等,只有实现了 ...
- 流行框架angular
---恢复内容开始--- 一.angular是什么 一款非常优秀的前端高级js框架,由谷歌团队负责开发 angular是通过新的属性和表达扩展了html angular可以构建一个单一页面应用程序(s ...
随机推荐
- crontab设置作业间隔执行问题
这个源于有个网友问,crontab里 */40 9 * * * 是不是代表9点开始每40分钟执行? 直觉这个肯定不是从9:00开始每隔40分钟执行一次,但是也不能肯定它代表一个什么样的 ...
- linux shell 读取for循环中出现难处理的数据之单引号错误实例
原语句: #!/bin/bash for test in I don't know if this'll work do echo "work:$test" done 结果: wo ...
- class.c 添加中文注释(2)
/* Class Device Stuff */ int class_device_create_file(struct class_device * class_dev, const struct ...
- 自己开发一个 vsts agent 的 task
vsts 中支持自定义Build/Release的过程Task 目标:做一个可以读取 Xamarin.Android 所生成的 APK 的 基本信息的 task ,包括 package(包名) / a ...
- EF 资料
初级部分 入门教程 Learn Entity Framework(微软官方) http://www.entityframeworktutorial.net/ Fluent API http ...
- 学习大神笔记之“MyBatis学习总结(二)”
MyBatis对表的增删改查操作 主要有两种方式:基于XML实现和基于注解实现. 完整项目结构: 工具类:MyBatisUtil-------用于获取 sqlsession pack ...
- Linux 下系统调用的三种方法
系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU.磁盘.打印机等)进行交互提供的一组接口.当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系 ...
- 《Paxos Made Simple》翻译
1 Introduction 可能是因为之前的描述对大多数读者来说太过Greek了,Paxos作为一种实现容错的分布式系统的算法被认为是难以理解的.但事实上,它可能是最简单,最显而易见的分布式算法了. ...
- Django 1.9 支持中文(转)
昨天Django1.9发布了,今天我才刚开始学习Django,然后有一个问题就卡住了——如何支持中文?上网上查了好多资料都不好使,最后我搜索Django文件夹才发现,在1.9版本里,简体中文代码是zh ...
- Java的String中的subString()方法
方法如下: public String substring(int beginIndex, int endIndex) 第一个int为开始的索引,对应String数字中的开始位置, 第二个是截止的索引 ...