【发布时间】:2016-10-30 20:16:45
【问题描述】:
我目前正在使用 AngularJS 1.5 和使用 Webpack 构建的 ES6。
我创建了一个指令“UniqueValidator”来检查是否尚未使用电子邮件。为此,我当然做了一个名为“RegisterService”的服务。
我正在尝试在指令中注入此服务,但它不起作用...(RegisterService 未定义) 我很确定这是一个小故障,但我可以看到它......
我的模块定义:
import angular from 'angular';
import 'angular-ui-router';
import 'angular-messages';
import {UniqueValidator} from './register.directive';
import registerComponent from './register.component';
import {RegisterService} from './../services';
const module = angular.module('register.module', ['ui.router', 'ngMessages'])
.component('register', registerComponent)
.config(($stateProvider) => {
"ngInject"; // ng-annotate doesn't handle arrow functions automatically; need to add the directive prologue.
$stateProvider
.state('register', {
url: '/register',
template: '<register></register>'
});
})
.service('registerService', RegisterService)
.directive('uniqueValidator', () => new UniqueValidator)
.name;
export default module;
我的指令:
class UniqueValidator {
/*@ngInject*/
constructor(registerService) {
this.restrict = 'A';
this.require = 'ngModel';
this.registerService = registerService;
console.log("Register service", this.registerService);
}
link(scope, element, attrs, ngModel) {
if (!ngModel || ngModel.$error[attrs.name]) return;
ngModel.$asyncValidators.unique = function() {
console.log('RegisterService', this.registerService);
return this.registerService.isUnique('email', element.val());
};
}
}
export {UniqueValidator};
注释 /@ngInject/ 例如适用于我的控制器.. 那么为什么不使用我的指令呢?
【问题讨论】: