右$render
は、モデルが変更されたときに角度で呼び出されます。 $render docsによると:
$)(ビューを更新する必要があるときに呼び出され
をレンダリングします。 ng-modelディレクティブのユーザ がこのメソッドを実装することが期待されます。
それは(いつでもngModel
変化と呼ばれる)$render
がngModelWatch
に呼び出されたかを確認するために便利です。ここでは、その後、$viewValue
が更新され、$formatters
と呼ばれる参照し、最終的に$render
が呼び出されます。
$scope.$watch(function ngModelWatch() {
var value = ngModelGet($scope);
// if scope model value and ngModel value are out of sync
if (ctrl.$modelValue !== value) {
var formatters = ctrl.$formatters,
idx = formatters.length;
ctrl.$modelValue = value;
while(idx--) {
value = formatters[idx](value);
}
if (ctrl.$viewValue !== value) {
ctrl.$viewValue = value;
ctrl.$render();
}
}
return value;
});
}];
それが初期値のために呼び出されていない理由は、ディレクティブの最後であるため、この行は次のとおりです。
// load init value from DOM
ctrl.$setViewValue(elm.html());
ngModelWatch()
をトリガーすることなくビューの値を手動で更新するため、$formatters
または$render
を経由せずに手動でビューの値を更新します。その行が代わりにした場合:
scope.content=elm.html();
あなたはそれが詳細な説明のため$watch
感謝をトリガーするよう
$render
は、角度によって呼び出さ参照してくださいね!モデルが変更されたときに[この例(http://stackoverflow.com/q/21084088/247243) '$ render'が呼び出されない理由を説明してください。 –