首页 >

AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值_AngularJS

web前端|js教程AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值_AngularJS
angularjs_scope赋值,angularjs_eval,eval_parse
web前端-js教程
在”AngularJS中自定义有关一个表格的Directive”中自定义了一个有关表格的Direcitve,其表格的表现方式是这样的:
静态apk分发源码,vscode设置输出编码,ubuntu 运行 py,tomcat中文显示问题,严查爬虫,php 架站,平潭正规seo哪个好,手机如何网站模板图片,网页模板设计软件lzw
以上,变量colmnmap的值是事先定义在了Scope中的:
svg 编辑器 源码,vscode网页视图,runit ubuntu,验证tomcat安装,sqlite3 用户权限,discuz插件安装后语言包在哪,有哪些web前端框架及其优点,淘宝机器爬虫咋处理的,php apache日志,黄石seo排名推广,蓝色清新phpcms企业网站模板,网页登录特效代码,织梦cms模板安装试图教程lzw
return {restrict: 'E',scope: {columnmap: '=',datasource: '='},link:link,template:template}; 

AngularJS中,还有一种运行时给Scope变量赋值的办法,那就是在link函数中使用$parse或$eval方法

易语言仿360浏览器源码,vscode保存编码,如何把u盘装成ubuntu,tomcat 8.5 32,管理安卓 sqlite,图片轮播插件 jquery插件,汽车用语前端框架英语,爬虫可以做架构吗,php类的构造函数,seo技术专家,淘宝客网站下载,ws美食网页源代码,管制图模板,b2b电子商务程序lzw
在Direcitve的呈现方面和以前一致:

Directive大致是这样:

var tableHelperWithParse = function($parse){var template = "",link = function(scope, element, attrs){var headerCols = [],tableStart = '',tableEnd = '
',table = '',visibleProps = [],sortCol = null,sortDir = 1,columnmap = null;$scope.$watchCollection('datasource', render);//运行时赋值columnmapcolumnmap = scope.$eval(attrs.columnmap);//或者columnmap = $parse(attrs.columnmap)();wireEvents();function rener(){if(scope.datasource && scope.datasourse.length){table += tableStart;table += renderHeader();table += renderRows() + tableEnd;renderTable();}}};return {restrict: 'E',scope: {datasource: '='},link: link,template: template}}angular.module('direcitvesModule').directive('tableHelperWithParse', tableHelperWithParse);
下面给大家介绍下$parse和$eval的不同

首先,$parse跟$eval都是用来解析表达式的, 但是$parse是作为一个单独的服务存在的。$eval是作为scope的方法来使用的。

$parse典型的使用是放在设置字符串表达式映射在真实对象上的值。也可以从$parse上直接获取到表达式对应的值。

var getter = $parse('user.name'); var setter = getter.assign; setter(scope, 'new name');getter(context, locals) // 传入作用域,返回值setter(scope,'new name') // 修改映射在scope上的属性的值为‘new value'
$eval 即scope.$eval,是执行当前作用域下的表达式,如:scope.$eval(‘a+b’); 而这个里的a,b是来自 scope = {a: 2, b:3};

看看源码它的实现是

$eval: function(expr, locals) {return $parse(expr)(this, locals);},
可以找到它也是基于$parse,不过它的参数已经被固定为this,就是当前的scope,所以$eval只是在$parse基础上的封装而已,是一种$parse快捷的API。


  • 暂无相关文章