我有一个指令。该指令需要先调用。基于该指令返回值剩余函数需要调用。但在我的场景中,第一个函数是在该指令调用之后调用。
如何先调用指令。有没有与此相关的优先概念。
更新
该指令添加了格式化掩码($)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
}])