我有一个属性指令,我在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。$ modelValue是空的,可能是因为在初始化指令时,ngModel还没有使用正确的值更新。那么,我如何在我的指令上存储我输入字段上设置的第一个值?
如何正确访问ngModel。$ modelValue以使其具有正确的值?
我也很感激解释为什么这不起作用,因为我没有通过阅读文档清楚地理解这一点。
Plunkr完整示例:http://plnkr.co/edit/QgRieF
答案 0 :(得分:4)
在myDirective
中使用$watch
app.directive('myDirective', function () {
return {
restrict: "A",
scope: {
},
require: "ngModel",
link: function (scope, elm, attr, ngModel) {
var mywatch = scope.$watch(function(){
return ngModel.$viewValue;
}, function(value){
if(value){
console.log("hi");
console.log(ngModel.$modelValue);
console.log(ngModel.$viewValue);
console.log(elm.val());
mywatch();
}
});
}
}
});