我一直在研究指令“input-container”,我需要在孩子的输入 ng-model 上添加一个 $watch。我该怎么做?
<input-container>
<label>Doc</label>
<input type="text" ng-model="model.userName"/>
</input-container>
<input-container>
<label>Senha</label>
<input type="password" ng-model="model.password"/>
</input-container>
我需要根据我的输入值向我的指令包装添加不同的类。我添加了这样的手表
app.directive('inputContainer', function () {
return {
restrict: 'E',
link: function (scope, elem, attrs) {
elem.addClass('input-container');
elem.find('input').bind('focus', function () {
elem.addClass('focused');
});
//---- code
scope.$watch(???????, function (value) {
if (value)
//-- do something
else
//-- do something
})
}
};});
但是我不知道如何观看我的输入 ngModel。这是我发现让这个工作的唯一方法。无论如何,它不允许我访问 $viewValue
scope.$watch(elem.find('input')[0].attributes['ng-model'].nodeValue, function (value) {
if (value)
//-- do something
else
//-- do something
})
我需要的是动态获取输入 ngmodel 变量,一旦它为每个指令实例具有不同的名称,这样我就可以执行以下操作:
scope.$watch(function(){
return childInputNgModel.$viewValue;
}, function (newValue) {
if (newValue)
//-- do something
else
//-- do something
})