如何先执行指令然后再执行事件

时间:2017-03-28 14:41:04

标签: javascript angularjs angularjs-directive

我有一个指令。该指令需要先调用。基于该指令返回值剩余函数需要调用。但在我的场景中,第一个函数是在该指令调用之后调用。

如何先调用指令。有没有与此相关的优先概念。

更新

该指令添加了格式化掩码($)here.,但它不会影响ng-model。那个文本框也包含另一个功能。因此,如果该函数首先执行,那么($)符号将出现在ng-model中。如果首先执行指令,那么它将不会影响ng-model。所以我想先执行指令。

.directive('format', ['$filter', function($filter) {
    return {
      require: 'ngModel',
      scope: {
        val: '=val'
      },
      link: function(scope, elem, attrs, ctrl) {

        if (!ctrl) return;
        ctrl.$formatters.unshift(function(a) {

          if (attrs.symbol == '$')
            return $filter(attrs.format)(ctrl.$modelValue, '$')
          else
            return $filter(attrs.format)(ctrl.$modelValue)
        });

                scope.$watch(function() {
            return elem.val()
        }, function(newVal, oldVal) {
          var a = newVal;
          var plainNumber = a.split('.').filter(function(e) {
            return (e.length > 0);
          }).join('.');
          var i = 0;
          if (isNaN(parseFloat(plainNumber))) {
            i = (attrs.symbol == '$') ? 1 : 3;
          }
          var num = plainNumber.substring(i, plainNumber.length).replace(/,/g, '');
          if (attrs.symbol == '$')
            elem.val($filter('currency')(num, attrs.symbol));
          else
            elem.val($filter('currency')(num));
          var n = parseFloat(num);
          scope.val = Number(n);
          if (!scope.$$phase) {
            scope.$apply();
          }
        });
      }
    };

    // controller 
  }])

0 个答案:

没有答案