亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

angular學習(九)—— 插補

2024-04-27 15:05:16
字體:
來源:轉載
供稿:網友

插補和數據綁定

在angular中,嵌入式表達式插補標記被用于數據綁定文本節點和屬性值。

一個嵌入式表達式插補標記的例子:

<a ng-href="img/{{username}}.jpg">Hello {{username}}!</a>

文本和屬性綁定如何運行

在編譯的過程中,編譯器會使用$interpolate服務去查看文本節點和元素屬性是否包含嵌入式表達式插補標記。如果有的話,就會增加一個interpolateDirective在這個節點上,并且在插補的計算函數上注冊watches,作為常規digest循環的一部分,會更新對應的文本節點和屬性值。

注意,interpolateDirective的優先級為100,并且在預鏈接函數中設置watch。

字符串表達式如何運算

如果插補值不是string,那么它這樣運算:

undefinednull被轉換成''如果值是一個對象,但不是Number,Date,Array,$interpolate將查找對象自定義的toString()函數,自定義意味著myObject.toString !== Object.PRototype.toString.如果以上都不是,將會采用JSON.stringify

boolean屬性的綁定

disabled這樣的屬性就叫做boolean屬性,因為存在就是true,不存在就是false,對它們不能使用普通的屬性綁定,因為HTML規范沒有要求瀏覽器保存boolean屬性值。這意味著,我們在boolean屬性上放一個angularjs插補表達式,這個綁定信息會丟失掉,因為瀏覽器會忽略這個屬性值。

在下面的例子中,插補信息會被忽略掉,瀏覽器會簡單解釋為屬性是存在的,這樣按鈕永遠都是禁用狀態。

Disabled: <input type="checkbox" ng-model="isDisabled" /><button disabled="{{isDisabled}}">Disabled</button>

因此,AngularJS為這些boolean屬性提供了一個特殊的ng為前綴的指令,這些屬性包括:disabled, required, selected, checked, readOnly 和 open。

當boolean屬性的表達式計算為真時,這些指令將設置一個相應的true。

Disabled: <input type="checkbox" ng-model="isDisabled" /><button ng-disabled="isDisabled">Disabled</button>

用ngAttr綁定任意屬性

瀏覽器有時候會挑剔屬性值的有效性。

例如:

<svg> <circle cx="{{cx}}"></circle></svg>

我們希望瀏覽器可以進行綁定,但是我們看控制臺就會發現Error: Invalid value for attribute cx="{{cx}}",因為SVG DOM API的限制,你不能簡單的寫cx="{{cx}}".

用ng-attr-cx,你就可以解決這個問題。

如果帶有綁定的屬性以ngAttr為前綴,綁定的時候就會應用為無前綴的屬性,這將允許你綁定那些會被瀏覽器處理的屬性。當你使用ngAttr時,$interpolate的allOrNothing將會啟用,如果插補表達式的運算結果為undefined,這個屬性就會被移除,不會增加到元素中。

上面的例子使用ngAttr重寫一下:

<svg> <circle ng-attr-cx="{{cx}}"></circle></svg>

如果下修改一些駱駝命名法的屬性,比如在svg元素中的viewBox,可以用下劃線的方式來綁定這些屬性:

綁定viewBox應該這樣寫:

<svg ng-attr-view_box="{{viewBox}}"></svg>

有一些屬性當使用插補時也有不少問題,同樣可以使用ngAttr前綴,已知的這些屬性如下:

size ,<select>元素placeholder ,Internet Explorer 10/11 中的<textarea>元素type ,Internet Explorer 11中的<button>元素value ,Internet Explorer 11中的<progress>元素

已知問題

動態改變插補值

你應該避免動態改變插補字符串的內容(例如屬性值或文本節點),當原始字符串正在運算時,你的改變就會被覆蓋。這個限制適用于用javascr的同時,使用ngStyle指令去更改屬性的內容。

在表達式中內嵌插補

在表達式中嵌入式插補是個不好的做法:

<div ng-show="form{{$index}}.$invalid"></div>

你可以將復制表達式的計算委托給scope,例如:

<div ng-show="getForm($index).$invalid"></div>function getForm(index) { return $scope['form' + index];}

你也可以用this訪問scope,例如

<div ng-show="this['form' + $index].$invalid"></div>

為什么不建議將插補和表達式混合

它增加了標記的復雜性不能保證適用于所有指令,因為插補本身就是一個指令,如果其他指令在插補指令之前訪問數據,那么它將得到一個插補標記而不是數據對性能優影響,因為會增加額外到watch到scope中

因為是不推薦的用法,沒做充足的測試,angular核心代碼的更改會產生bug

如果我的文章對您有幫助,請用支付寶打賞:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97国产一区二区精品久久呦| 青青草成人在线| 国产精品欧美日韩久久| 精品人伦一区二区三区蜜桃网站| 国产丝袜高跟一区| 欧美精品久久久久久久免费观看| 亚洲福利视频久久| 久久久av免费| 在线视频日本亚洲性| 久久亚洲精品一区二区| 国模吧一区二区| 日韩av在线免费看| 亚洲视频电影图片偷拍一区| 亚洲精品免费一区二区三区| 日韩精品欧美激情| 日韩av在线天堂网| 国产精品视频一区国模私拍| 国产精品久久久亚洲| 亚洲女性裸体视频| 第一福利永久视频精品| 久久91亚洲精品中文字幕| 亚洲免费精彩视频| 在线成人中文字幕| 国产精品视频自在线| 亚洲欧洲一区二区三区久久| 日韩视频永久免费观看| 日本精品久久久| 久久久免费在线观看| 91香蕉国产在线观看| 成人美女av在线直播| 岛国av一区二区在线在线观看| 韩国三级日本三级少妇99| 人妖精品videosex性欧美| 久热精品视频在线观看| 亚洲小视频在线| 亚洲а∨天堂久久精品9966| 日韩亚洲成人av在线| 97人洗澡人人免费公开视频碰碰碰| 一本色道久久综合狠狠躁篇的优点| 色综合伊人色综合网站| 91久久国产婷婷一区二区| 亚洲欧美国产va在线影院| 亚洲欧洲在线免费| 欧美成人中文字幕| 91中文字幕在线观看| 亚洲精品美女久久久| 91精品久久久久久久久久另类| 国产精品18久久久久久首页狼| 色婷婷久久一区二区| 97视频在线观看免费高清完整版在线观看| 中文字幕亚洲综合久久| 成人午夜在线影院| 69视频在线免费观看| 精品欧美国产一区二区三区| 亚洲精品福利免费在线观看| 亚洲精品国产电影| 欧美日韩国产区| 亚洲精品一区二区三区婷婷月| 久久精品美女视频网站| 91干在线观看| 亚洲欧美激情四射在线日| 国产精品亚洲片夜色在线| 久久精品视频va| 国产欧美最新羞羞视频在线观看| 精品五月天久久| 国产精品久久久久久久久粉嫩av| 欧美视频精品一区| 日韩精品电影网| 久久成年人免费电影| 日韩国产中文字幕| 精品久久久久久中文字幕大豆网| 欧美日韩中文字幕日韩欧美| 隔壁老王国产在线精品| 国产精品高清免费在线观看| 色噜噜亚洲精品中文字幕| 欧美大荫蒂xxx| 亚洲国产三级网| 95av在线视频| 国产欧美精品在线| 97精品视频在线播放| 色狠狠久久aa北条麻妃| 亚洲欧美制服中文字幕| 亚洲欧美精品中文字幕在线| 欧美日韩国产二区| 亚洲欧美综合区自拍另类| 中文在线资源观看视频网站免费不卡| 精品国产福利在线| 亚洲乱码国产乱码精品精| 欧美黑人又粗大| xvideos亚洲人网站| 国产精品福利在线观看| 一区二区成人av| 中文字幕久热精品视频在线| 国产人妖伪娘一区91| 国产欧美一区二区三区视频| 欧美性猛交xxxx乱大交| 欧美国产日产韩国视频| 日韩欧美在线播放| 久久精品91久久香蕉加勒比| 亚洲精品大尺度| 一区二区三区日韩在线| 全球成人中文在线| 中文字幕国产精品久久| 91久久精品国产91久久| www.美女亚洲精品| 粗暴蹂躏中文一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 在线播放国产一区二区三区| 成人高h视频在线| 精品国产一区二区三区久久狼黑人| www.欧美精品一二三区| 亚洲tv在线观看| 亚洲欧洲xxxx| 欧美精品第一页在线播放| 久久久在线免费观看| 在线视频一区二区| 国产精品免费小视频| 欧美大肥婆大肥bbbbb| 国产精品第三页| 国产精品18久久久久久麻辣| 亚洲精品成人久久久| 国产精品永久免费视频| 亚洲三级av在线| 国产精品美女久久| 亚洲美女自拍视频| 欧美日韩性生活视频| 国产精品久久色| 91视频8mav| 国产在线精品一区免费香蕉| 亚洲影院高清在线| 亚洲欧美日本另类| 久久这里只有精品视频首页| 久久久久久999| 韩日精品中文字幕| 欧美激情视频网址| 黑人欧美xxxx| 日韩精品高清在线观看| 欧美激情第6页| 国产精品一区二区久久| 欧美黄色片免费观看| 国产精品美女在线观看| 亚洲国产小视频在线观看| 美女av一区二区三区| 国产日韩欧美在线视频观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久久av久久久| 久久深夜福利免费观看| 久久天天躁日日躁| 欧美激情精品久久久久久蜜臀| 亚洲福利在线观看| 久热精品在线视频| 日韩视频免费在线| 日韩欧亚中文在线| 欧美日韩成人在线视频| 丝袜美腿精品国产二区| 久久频这里精品99香蕉| 5566日本婷婷色中文字幕97| 国产自产女人91一区在线观看| 亚洲福利在线视频| 亚洲人成在线观| 亚洲欧美成人在线| 91九色单男在线观看| 成人免费在线网址| 成人午夜在线视频一区|