最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對(duì)Scope變量賦值

 更新時(shí)間:2016年01月25日 11:41:50   投稿:mrr  
這篇文章主要介紹了AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對(duì)Scope變量賦值的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下

在"AngularJS中自定義有關(guān)一個(gè)表格的Directive"中自定義了一個(gè)有關(guān)表格的Direcitve,其表格的表現(xiàn)方式是這樣的:

<table-helper datasource="customers" clumnmap="[{name: 'Name'}, {street: 'Street'}, {age: 'Age'}, {url: 'URL', hidden: true}]"></table-helper>

以上,變量colmnmap的值是事先定義在了Scope中的:

return {
restrict: 'E',
scope: {
columnmap: '=',
datasource: '='
},
link:link,
template:template
}; 

AngularJS中,還有一種運(yùn)行時(shí)給Scope變量賦值的辦法,那就是在link函數(shù)中使用$parse或$eval方法。

在Direcitve的呈現(xiàn)方面和以前一致:

<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);
//運(yùn)行時(shí)賦值columnmap
columnmap = 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都是用來(lái)解析表達(dá)式的, 但是$parse是作為一個(gè)單獨(dú)的服務(wù)存在的。$eval是作為scope的方法來(lái)使用的。

$parse典型的使用是放在設(shè)置字符串表達(dá)式映射在真實(shí)對(duì)象上的值。也可以從$parse上直接獲取到表達(dá)式對(duì)應(yīng)的值。

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,是執(zhí)行當(dāng)前作用域下的表達(dá)式,如:scope.$eval('a+b'); 而這個(gè)里的a,b是來(lái)自 scope = {a: 2, b:3};

看看源碼它的實(shí)現(xiàn)是

$eval: function(expr, locals) {
return $parse(expr)(this, locals);
},

可以找到它也是基于$parse,不過(guò)它的參數(shù)已經(jīng)被固定為this,就是當(dāng)前的scope,所以$eval只是在$parse基礎(chǔ)上的封裝而已,是一種$parse快捷的API。

相關(guān)文章

  • AngularJs bootstrap搭載前臺(tái)框架——準(zhǔn)備工作

    AngularJs bootstrap搭載前臺(tái)框架——準(zhǔn)備工作

    本文主要介紹AngularJs bootstrap搭載前臺(tái)框架,這里對(duì)Bootstrap 搭載環(huán)境,及注意事項(xiàng)做了講解,有需要的小伙伴可以參考下
    2016-09-09
  • ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例

    ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例

    本篇文章主要介紹了ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • AngularJS實(shí)現(xiàn)按鈕提示與點(diǎn)擊變色效果

    AngularJS實(shí)現(xiàn)按鈕提示與點(diǎn)擊變色效果

    這篇文章給大家介紹了如何利用AngularJS實(shí)現(xiàn)按鈕提示與點(diǎn)擊變色的效果,文中提供了實(shí)例代碼,對(duì)大家學(xué)習(xí)AngularJS具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。
    2016-09-09
  • Angular+Ionic使用queryParams實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)傳值的方法

    Angular+Ionic使用queryParams實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)傳值的方法

    這篇文章主要介紹了Angular+Ionic使用queryParams實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)傳值的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Angular開發(fā)實(shí)踐之服務(wù)端渲染

    Angular開發(fā)實(shí)踐之服務(wù)端渲染

    這篇文章主要介紹了Angular開發(fā)實(shí)踐之服務(wù)端渲染,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 最新評(píng)論

    张家川| 卢龙县| 九江县| 莱阳市| 长顺县| 洛南县| 武威市| 应用必备| 西华县| 广元市| 永定县| 白银市| 大丰市| 上虞市| 乌拉特后旗| 利津县| 陕西省| 双峰县| 乌鲁木齐县| 伊川县| 白山市| 神池县| 揭阳市| 鹿泉市| 新河县| 渑池县| 增城市| 定西市| 三穗县| 阿拉尔市| 辽源市| 霍州市| 通渭县| 岑溪市| 八宿县| 沅陵县| 贵州省| 宁德市| 永修县| 茌平县| 宁乡县|