次のような input=text タグで使用する属性ディレクティブがあります。
<input type="text" ng-model="helo" my-directive />
私のディレクティブでは、ngModelController を使用して、入力の初期値 (この場合はそれに関連付けられている ng-model の値) を保存しようとしています。
ディレクティブは次のようになります。
app.directive('myDirective', function () {
return {
restrict: "A",
scope: {
},
require: "ngModel",
link: function (scope, elm, attr, ngModel) {
console.log("hi");
console.log(ngModel.$modelValue);
console.log(ngModel.$viewValue);
console.log(elm.val());
}
}
});
問題は、ディレクティブが初期化された時点で ngModel がまだ正しい値で更新されていなかったため、 ngModel.$modelValue が空である可能性があることです。では、入力フィールドに設定された最初の値をディレクティブに保存するにはどうすればよいでしょうか?
正しい値を持つように ngModel.$modelValue に正しくアクセスする方法は?
また、ドキュメントを読んでもこれが明確に理解できないため、これが機能しない理由についての説明をいただければ幸いです。
Plunkr の完全な例: http://plnkr.co/edit/QgRieF