ng-model-options指令

概述

ng-model-options指令用來更改ng-model等指令的默認(rèn)行為鸟妙,這個指令可以在任何位置使用挥吵,它會影響ng-model和輸入型指令以及他們的派生指令。ng-model-options指令可以被指定為一個運算式忽匈,但是這個運算式在通過Angular計算后必須得到一個Object,這個Object的屬性就是設(shè)置項丹允。
一個指令的option值是會向上計算的,比如:

<div ng-model-options="{ allowInvalid: true }">
  <form ng-model-options="{ updateOn: 'blur' }">
    <input ng-model-options="{ updateOn: 'default' }" />
  </form>
</div>

在這段代碼中雕蔽,input元素的options屬性為:

{ allowInvalid: true, updateOn: 'default' }

實現(xiàn)細(xì)節(jié)

ng-model-options指令的基礎(chǔ)是$modelOptionsProvider。
provider的核心代碼:

var _options = extend({}, parentOptions, options);

在這個provider中批狐,最核心的代碼只有一行前塔,這行代碼實現(xiàn)了上面所說的option向上合并的功能。
在ng-model-options指令中华弓,最關(guān)鍵的部分在link中:

pre: function ngModelOptionsPreLinkFn(scope, element, attrs, ctrls) {
  var optionsCtrl = ctrls[0];
  var parentOptions = ctrls[1] ? ctrls[1].$options : $modelOptions;
  optionsCtrl.$options = parentOptions.createChild(scope.$eval(attrs.ngModelOptions));
}

在這里會根據(jù)父option以及自己的ng-model-options屬性創(chuàng)建一個options困乒,利用的是$modelOptionsProvider提供的功能寂屏。
options默認(rèn)值:

屬性 默認(rèn)值
updateOn default
debounce 0
allowInvalid undefined
getterSetter undefined
timezone undefined

樣例代碼

<!DOCTYPE html>
<html lang="en" ng-app="app">
<!--<html>-->
<head>
    <title>Test</title>
</head>
<body>
     <div ng-controller="ExampleController">
       <form name="userForm">
         <label>
             Name:
               <input type="text" name="userName"
                                         ng-model="user.name"
                                         ng-model-options="{ updateOn: 'blur' }"
                                         ng-keyup="cancel($event)" />
             </label><br />
             <label>
               Other data:
               <input type="text" ng-model="user.data" />
             </label><br />
           </form>
           <pre>user.name = <span ng-bind="user.name"></span></pre>
         </div>
<script src="./node_modules/angular/angular.js" type="text/javascript"></script>
<script>
    angular.module('app', [])
            .controller('ExampleController', ['$scope', function ($scope) {
                         $scope.user = { name: 'say', data: '' };

                         $scope.cancel = function(e) {
                               if (e.keyCode === 27) {
                                 $scope.userForm.userName.$rollbackViewValue();
                               }
                             };
            }]);
</script>
</body>
</html>

這段代碼修改了默認(rèn)數(shù)據(jù)更新方式凑保,在輸入焦點發(fā)生變化的時候才會把數(shù)據(jù)寫入到scope中去。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欧引,一起剝皮案震驚了整個濱河市恳谎,隨后出現(xiàn)的幾起案子芝此,更是在濱河造成了極大的恐慌因痛,老刑警劉巖婚苹,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸵膏,死亡現(xiàn)場離奇詭異,居然都是意外死亡谭企,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門债查,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盹廷,你說我怎么就攤上這事《碚迹” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵缸榄,是天一觀的道長。 經(jīng)常有香客問我碰凶,道長鹿驼,這世上最難降的妖魔是什么辕宏? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮瑞筐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘聚假。我一直安慰自己,他們只是感情好膘格,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瘪贱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菜秦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天球昨,我揣著相機與錄音,去河邊找鬼主慰。 笑死,一個胖子當(dāng)著我的面吹牛河哑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播璃谨,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鲤妥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棉安?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤贡耽,失蹤者是張志新(化名)和其女友劉穎鹊汛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刁憋,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡木蹬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了镊叁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尘颓。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡晦譬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出敛腌,到底是詐尸還是另有隱情,我是刑警寧澤迎瞧,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站凶硅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏足绅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一氢妈、第九天 我趴在偏房一處隱蔽的房頂上張望粹污。 院中可真熱鬧首量,春花似錦、人聲如沸加缘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沈贝。三九已至勋乾,卻和暖如春宋下,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背学歧。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撩满,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓昭躺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伪嫁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理帝洪,服務(wù)發(fā)現(xiàn),斷路器脚猾,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 1.背景介紹 指令是一個Dom元素上的標(biāo)簽(和元素上的屬性, CSS類樣式一樣,屬于這個Dom元素)它告訴Angu...
    cczhuc閱讀 1,133評論 0 1
  • 簡簡單單的上班下班赡鲜,做好自己的工作。 至真至純蝗蛙,如花美夢。
    地六藏之閱讀 245評論 1 1
  • 1捡硅、真正的銷售是一個愉快的聊天過程盗棵;聊對方的心愿壮韭、聊對方的擔(dān)憂、聊如何完成對方的心愿喷屋、聊如何拿走對方的擔(dān)憂琳拨。 2屯曹、...
    Constance1993閱讀 175評論 0 0
  • 工作是生活的一部分,生活中的技能可以放到工作中恶耽,同樣密任,工作中的技能也可以放入生活中偷俭,其中有兩個技能是比較有意思的浪讳,...
    新仔走天涯閱讀 203評論 0 0