时间:2021-05-28
在"AngularJS中自定义有关一个表格的Directive"中自定义了一个有关表格的Direcitve,其表格的表现方式是这样的:
以上,变量colmnmap的值是事先定义在了Scope中的:
AngularJS中,还有一种运行时给Scope变量赋值的办法,那就是在link函数中使用$parse或$eval方法。
在Direcitve的呈现方面和以前一致:
<table-helper-with-parse datasource="customers" columnmap="[{name: 'Name'},...]"></table-helper-with-parse>Directive大致是这样:
var tableHelperWithParse = function($parse){var template = "",link = function(scope, element, attrs){var headerCols = [],tableStart = '<table>',tableEnd = '</table>',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。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
简介injector是用来做参数自动注入的,例如functionfn($http,$scope,aService){}ng在运行时会把$http,$scope,
在ASP.net中有两个功能相似的方法:eval和bind,那么这两种方法有什么区别呢?看看下面的文章对这两个方法的介绍。eval()方法在运行时使用反射执行后
服务器系统变量服务器将维护许多表示其配置的系统变量。所有变量均有默认值。可以在命令行中或选项文件设置选项在服务器启动时对它们进行设置。大多数可以在运行时使用SE
C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(De
AngularJS的初学者常常会对$parse和$eval两个内建服务感到有些困惑,今天我们就来说说AngularJS中的$parse和$eval。总的来说,$