【发布时间】:2016-08-08 02:45:44
【问题描述】:
任何人都可以举一个使用 Angular 1.5 组件的服务的例子吗?
我正在尝试在 Angular 1.5 组件中注入服务,但它不起作用。
我有一个像这样的登录组件:
class Login {
constructor($scope, $reactive, $state, myService) {
console.log(myService.somevariable); //doesn't work
}
}
// create a module
export default angular.module(name, [
angularMeteor
]).component(name, {
templateUrl: 'imports/ui/components/${name}/${name}.html',
controllerAs: name,
controller: Login
});
我的服务如下所示:
angular.module(name).service("myService", function () {
this.somevariable = 'somevalue';
});
我似乎无法在组件中注入服务。我做错了什么?
解决方案:
在sebenalern 的帮助下,我成功了。
我需要一项服务来使用正则表达式验证电子邮件地址。我是这样做的:
import angular from 'angular';
import angularMeteor from 'angular-meteor';
class Validator {
validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
}
const name = 'validator';
// create a module
export default angular.module(name, [
angularMeteor
])
.service("Validator", Validator);
然后我像这样注入服务:
import {name as Validator} from '../../../api/services/validator'
class Login {
constructor($scope, $reactive, $state, Validator) {
'ngInject';
this.$state = $state;
$reactive(this).attach($scope);
this.Validator = Validator;
}
login() {
if(this.Validator.validateEmail(this.credentials.email)) {
// email is valid.
}
}
}
const name = 'login';
export default angular.module(name, [
angularMeteor,
Validator
]).component(name, {
templateUrl: `imports/ui/components/${name}/${name}.html`,
controllerAs: name,
controller:Login
})
希望这会有所帮助:)
【问题讨论】:
-
组件是什么意思?
-
我已经更新了问题。我正在使用 Angular 1.5 组件,但我不知道如何在其中注入 Angular 服务。由于 Angular 1.5 是新的,我也找不到任何文档。
-
您收到错误消息了吗?
-
我更新了我的答案。我认为它应该有所帮助。
标签: angularjs