`

angularjs中的interpolate

 
阅读更多
张小俊128 发布在AngulaJS实例2014年3月7日view:2197
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。
隐藏标注

在AngularJS中使用字符串模板

如果你曾经使用过Handlerbars等模板引擎,你一定会觉得在AngularJS中进行开发非常的爽。在AngularJS中,你可以直接将DOM当做模板来使用,比如下面的例子:

<div>My name is {{name}}</div> 
在AngularJS对页面施展魔法时,它会自动将{{name}}替换为当前作用域中的name属性值。这实在是太方便了,我们再也不需要在页面中加入<template>或者<script>来预定义我们的模板,并在需要使用时将它插入页面里面了。

但是,有时还是想要使用字符串模板,比如说要根据用户生成的具体数据来生成模板,而不是预先在DOM中定义的情况。在AngularJS中,这种情况也能轻松的得到解决,我们可以使用AngularJS内置的$interpolate service来达成我们的目标,具体代码如下:

angular.module('myapp',[])
             .controller('myctrl',function($scope,$interpolate){
                var tmp = $interpolate('Publish by {{name}} on {{date}}');
                var data1 = {name: 'Mike',date: '2014-1-1'};
                var data2 = {name: 'Karen',date: '2014-1-2'}; 

                var str1 = tmp(data1);
                var str2 = tmp(data2);
             });
上面的例子非常简单,如果你曾经使用过其他的模板引擎,你会发现$interpolate()就相当于Handlerbars里面的Handlebars.compile()函数,或者是underscore中的_.template函数()。它们都是接收一个包含插值占位符的字符串,然后返回一个函数,接着我们只需要将插值的对象传递给这个函数,就能得到一个经过插值之后的字符串。

另外,在$interpolate中,我们也同样能够使用过滤器,比如下面的例子:

var template = $interpolate( 'Published by {{name|uppercase}} on {{date}}' );
var str = template( { name: 'Mike', date: '2013-11-25' } );
// str == "Published by MIKE on 2013-11-25" 
分享到:
评论

相关推荐

    AngularJS中的Directive实现延迟加载

    在AngularJS中,可以利用Directive(指令)来实现延迟加载。下面将详细介绍如何通过AngularJS中的Directive来实现延迟加载。 首先,我们要明确延迟加载的含义:延迟加载是指资源(比如图片、脚本、样式表等)在初始...

    精通AngularJS part1

    他曾在Devoxx UK和其他活动中发表过有关AngularJS的演讲,并开办过AngularJS的培训课程。他希望帮助企业更好地利用AngularJS。 目录 序1 第1章Angular之禅7 11邂逅AngularJS7 熟悉框架8 参与AngularJS项目8 ...

    AngularJS创建自定义指令的方法详解

    - **文本和属性绑定**:使用`$interpolate`服务在编译过程中绑定文本和属性,AngularJS会检测匹配到的文本和属性值是否包含内嵌表达式。 - **SVG元素的特例**:由于SVG DOM API的限制,某些属性不能直接使用绑定语法...

    AngularJS 整理一些优化的小技巧.docx

    在 AngularJS 1.3.0 及更高版本中,可以使用双冒号 `::` 前缀来创建一次性绑定,确保模型只绑定一次,避免不必要的 `$digest` 循环。例如: ```html &lt;div&gt;{{::myValue}} ``` 这种方式比使用第三方插件更便捷,...

    AngularJS 学习笔记

    在AngularJS中,通常使用双大括号`{{}}`来包裹表达式,如`{{name}}`,这样的表达式会被AngularJS的$interpolate服务处理,在编译过程中将表达式的值替换到页面上。这种方式极大地简化了模板代码,使页面的数据绑定...

    AngularJS 整理一些优化的小技巧

    在AngularJS中,每个页面定义的model都会在当前作用域下添加一个监听器,这些监听器存储在$$watchers数组中。一旦任何model的值发生变化,$digest循环就会启动,遍历作用域树中的所有model以确保数据同步。由于这一...

    AngularJs directive详解及示例代码

    在编译过程中,AngularJS的$interpolate服务会找到这些表达式并进行绑定,当数据发生变化时,表达式的结果会自动更新。例如: ```html Hello {{username}}! ``` AngularJS的编译过程包括三个主要步骤: 1. **...

    angularjs的一些优化小技巧

    尽量减少不必要的`$apply`调用,特别是在已处于AngularJS执行环境中时。 3. **谨慎使用ng-repeat**: `ng-repeat`会在循环中创建多个监听器,对大数据集性能影响显著。如果数据不常更新,考虑使用`$interpolate`...

    interpolation-angular:Angular $ 使用 ng-repeat 插入服务演示

    在AngularJS中,$interpolate服务是一个至关重要的组件,它负责将模板字符串转换为JavaScript表达式,从而在视图中动态地渲染数据。这个服务在Angular的双括号语法({{}})中扮演了核心角色,允许我们用Angular的...

    dust_issue_sample:我在 DustJS 中遇到的关于 Angular ngModel 的问题示例

    DustJS 可以被 AngularJS 的 $interpolate 服务所调用,从而在 Angular 的环境中执行。这样可以在 Dust 模板中直接使用 Angular 的表达式,但要注意避免使用 Angular 的指令。 ```javascript var dust = require('...

    angular-service-as-a-service:POC

    angularjs即服务 一个与 angular-server 一起工作的 POC 应用程序 例子 对 localhost:1337/scripts 执行POST { "name" : "greeting", "script" : "var $rootScope = injector.get('$rootScope');var $...

    Angular中$compile源码分析

    在AngularJS中,`$compile`服务是核心组件之一,负责将HTML模板转换为可执行的JavaScript代码,以便与Angular的双向数据绑定和指令系统协同工作。本文将深入探讨`$compile`服务的源码分析,帮助我们更好地理解其工作...

Global site tag (gtag.js) - Google Analytics