私は現在、WebpackでAngularJS 1.5とES6をビルドしています。AngularJS 1.5は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 /作品私のコントローラのためによく..例えば、私の指示でなぜそうではありませんか?