2016-05-13 2 views
1

Я пытаюсь создать директиву Angular.js, написанную с помощью NodeJS, и хочу использовать внешние угловые сервисы, такие как $ parse в функции директивной ссылки. Я не могу получить доступ к инъецированным службам, это не определено. Помогите мне, пожалуйста, сделать это. Вот моя директива:AngularJs с NodeJs не может получить доступ к угловым службам в функции директивной ссылки

'use strict'; 

var ngMatch = function($parse) { 
    return { 
    restrict :'AE', 
    link: link, 
    require: '?ngModel' 

    } 
}; 

/** @ngInject */ 
function link(scope, elem, attrs, ctrl) { 
// if ngModel is not defined, we don't need to do anything 
if (!ctrl) return; 
if (!attrs['ngMatch']) return; 

var firstPassword = $parse(attrs['ngMatch']); 

var validator = function (value) { 
var temp = firstPassword(scope), 
v = value === temp; 
ctrl.$setValidity('match', v); 
return value; 
} 

ctrl.$parsers.unshift(validator); 
ctrl.$formatters.push(validator); 
attrs.$observe('ngMatch', function() { 
validator(ctrl.$viewValue); 
}); 

} 
ngMatch.$inject =['$parse']; 

module.exports = ngMatch; 

ответ

0
  • Лучше не использовать ngMatch. У вас будут столкновения пространства имен, если Angular решила иметь встроенную директиву ngMatch
  • Вы только что определили два объекта ngMatch и ссылку. Нет никакого способа, чтобы угловые знали, что ngMatch является директивой.
+0

Спасибо за ответ, но угловатый знаю, что ngMatch является директивой, иначе я бы не получил ошибку с синтаксисом $. – Nomi

Смежные вопросы