$rollbackViewValue() is called. If we are rolling back the view value to the last committed value then $render() is called to update the input control.
The value referenced by ng-model is changed programmatically and both the $modelValue and the $viewValue are different from last time.
$setViewValue方法
当UI发生变化(事件的触发等),将得到变化的值,设置给$viewValue
$formatters
一组管道, 从$modelValue到$viewValue
function formatter(value) {
if (value) {
return value.toUpperCase();
}
}
ngModel.$formatters.push(formatter);
使用ngModel.NgModelController
在书写Angular指令的时候,经常需要和model进行交互, 你可以自己处理,可以使用ngModel的NgModelController进行处理。
引入NgModelController
参看 bootstrap-ui button.js Code Snapshot:
两个关键点: require
link函数
四个value
$scope.num = 100
NgModelController的工作就是控制着四个值之间的变化,例如 如果#1发生改变,那么#4也会发生变化,反之#4变化的话,#1也会变
Value Circle
$render方法
当UI发生变化(事件的触发等),将得到变化的值,设置给
$viewValue
$formatters
一组管道, 从
$modelValue
到$viewValue
$parsers
一组管道, 从
$viewValue
到$modelValue
Example
angular-ui boostrap button.js angular-ui bootstrap tooltip.js Time转换 你可以使用BootCDN 引入需要的库
相关资料
ngModelController文档 Jason Aden - Using ngModelController to Make Sexy Custom Components - NG-Conf 2014 using-ngmodelcontroller-with-custom-directives