2

我一直在研究指令“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
})
4

0 回答 0