$ watch on child element

时间:2016-03-16 19:50:28

标签: angularjs angularjs-directive angularjs-watch

我一直在制定指令'输入容器'我需要在孩子的输入模型上添加$ 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
})

0 个答案:

没有答案