.directive('brackets', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
var stack = [];
ctrl.$parsers.unshift(function(brackets) {
var pushed = function(el) {
var numLastElemStack = stack.length;
if (stack[numLastElemStack -1] === '{' && el === '}' || stack[numLastElemStack -1] === '[' && el === ']' ||
stack[numLastElemStack -1] === '(' && el === ')') {
stack.pop();
}
else {
stack.push(el);
return 'no valid';
}
};
if (/^[\[|\]|\(|\)|\{|\}]+$/.test(brackets)) {
var lastCharacter = brackets.substr(-1);
return pushed(lastCharacter);
} else {
return 'no valid';
}
});
}
};
})
Я сделал вот так, может вы подтолкнете меня на правильное решение?