如何在指令和验证中观察Angular变量?

萨拉斯·阿里亚(Saras Arya)

我已经在Angular中编写了一个简单的指令,通过该指令,无论我在文本框中键入的内容如何,​​即ion-Md-input应在指令中验证其长度为6。我正在尝试观察变量,直到变量达到大小6并进行验证并基于它激活提交按钮。

index.html

<div>          
<ion-md-input label="Enter the Device ID" hightlight-color="dark" type="text" ng-model="link" required ng-minlength=6></ion-md-input>               
</div>

指示

vehicoApp.directive('ionMdInput', ['$http',function($http){
console.log('In ionMdInput');
  return {
    restrict : 'E',
    template : 
    '<input type="text" class="transition-input ng-model="link" required ng-minlength=6>'+
    '<span class="md-highlight"></span>'+
    '<span class="md-bar"></span>'+
    '<label>{{label}}</label>', 
    require : 'ngModel',
    scope : {
      'label' : '@',
      'ngModel' : '='
    },

link : function (scope, elem, attrs, ngModel)
{
  if(!ngModel) return;

  scope.$watch(attrs.link, function(){ 
    validate();
  }, true);

  var validate = function() {
    var val1 = ngModel.$viewValue;
    console.log(val1);
  }
 }
}
}]);

现在,甚至在我开始在文本框中输入名称之前。我得到一个未定义的,仍然像它。现在,我想查看该值并进行验证。我将如何处理?经过大量的SO帖子后,我看不到任何错误。

dfsq

首先,您没有link属性。那么您的范围配置就不是您的情况下的设置。您可以简单地双向绑定ngModel属性到内部作用域模型,该模型将用作指令输入的ngModel。

完成这些更改后,您可以为该模型设置观察者:

scope.$watch('model', function() {
    validate();
}, true);

整个指令如下所示:

.directive('ionMdInput', ['$http', function($http) {
    return {
        restrict: 'E',
        template: 
            '<input type="text" class="transition-input" ng-model="model" required ng-minlength=6>' +
            '<span class="md-highlight"></span>' +
            '<span class="md-bar"></span>' +
            '<label>{{label}}</label>',
        scope: {
            'label': '@',
            'model': '=ngModel'
        },

        link: function(scope, elem, attrs) {
            if (!attrs.ngModel) return;

            scope.$watch('model', function() {
                validate();
            }, true);

            var validate = function() {
                console.log(scope.model);
            }
        }
    }
}]);

演示: http //plnkr.co/edit/wh8ylLbW4YpZcEKOryae?p = preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Angular中观察表单更改

如何在其子类中观察 UITexFiled startEditing 和 EndEditing?

如何从AngularJS中观察窗口变量

如何在DialogFragment中观察ViewModel LiveData?

如何在班级中观察var?

如何在AngularJS中观察路线变化?

如何在RxSwift中观察对象的属性?

如何在Angular 6中观看服务变量

如何在 Angularjs 中观察 2 个变量,其中 1 是位置路径?

如何在xcode中观察者变量值随时间的变化

如何在mobx-state-tree中观察观察的变化

如何在Angular 2中观察不到的情况下调用http方法

如何在Angular 2中观察长字段形式的一些字段变化

如何在Angular中公开afterClosed()方法/可从Modal Wrapper Service中观察到

如何在 RXJS Angular 5 中观察没有特定名称的响应 JSON 中的对象

如何在pudb中观看变量?

在angular app指令中观看和使用webrtc流

VueJS-如何在localStorage中观察值?

如何在ObservableList中观察项目的属性更改

如何在闪亮的应用程序中观察 JavaScript 按钮

如何在角度表带中观察Aside闭合

如何在angularjs中的对象中观察对象

如何在RxSwift中观察数组属性的变化

如何在rxjs中观察.interval多个HTTP请求(forkjoin)

如何在ViewModel中观察Repository类的返回值?

如何在python中观察多个AND语句的行为

如何在自定义视图中观察 LiveData

如何在Angular中观看多个收藏?

如何在angular指令内动态注入验证属性