【问题标题】:angulars, directive, force ngModelCtrl.$parsersangularjs,指令,强制 ngModelCtrl.$parsers
【发布时间】:2016-07-14 06:31:17
【问题描述】:

我有一个自定义指令,可以根据他的值将视图值添加类更改为input:text

restrict: 'A',
require : 'ngModel',
link : function(scope, element, attrs, modelCtrl) {
  function apply(input) {
    // Simplified ..
    if ( input!=='Ooops' && isNaN(parseFloat(input) ) {
      modelCtrl.$setViewValue('Ooops'); 
      element.addClass('is-nan');
      return undefined;
    }
  }

  modelCtrl.$parsers.push(apply);
}

当我编辑值时它工作正常。但是,当元素由 Angular 绑定时,我想应用相同的逻辑,以便设置类和视图值。

基本上我想在指令链接时调用apply。所以我尝试在link 函数的末尾添加apply(element.val()),但element.val() 始终为空。

我认为我应该使用另一个生命周期挂钩来调用此方法,但找不到它。一种可能的解决方案是使用compile 而不是link,但由于我不进行DOM 转换,因此不需要这样做。

我试过modelCtrl.$observe('ngModel', ..),但输入值又是空的。

链接指令时如何应用视图逻辑?

谢谢

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-ng-model


    【解决方案1】:

    使用 $observe 可以正常工作。

    attrs.$observe('ngModel', function(value){
      apply(modelCtrl.$modelValue);
    });
    

    (我的apply 函数错误,所有值都返回“未定义”。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 2014-06-06
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多