2016-04-16 26 views
0

私は、Meteor 1.3の2つの異なるコンポーネント間でコードを共有するためのサービスを作成しようとしてきましたが、これまでには驚くほど成功していません。 Angular 1サービスの作成と注入は機能していないようです。私はカントは、コンポーネントに注入されたサービスを受けることができるように思われるMeteor-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'; 
}); 

私は角度サービスとても似ています。私は間違って何をしていますか?

SOLUTION:

私は正規表現を使用して電子メールアドレスを検証するためのサービスを必要としていました。私はこのようにそれをやった:

import angular from 'angular'; 
import angularMeteor from 'angular-meteor'; 
class Validator { 
    validateEmail(email) { 
     var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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 
}) 

・ホープ、このことができます:)

+0

正しく注入されていますか?あなたのコードはすべてここで共有しましたか?サンプルに注入するコードがありません。 –

+0

'$ state'、' $ reactive'、 '$ scope'は完全に動作しています。私は 'UserService'を注入し、そのメソッド' getStuff() 'を使いたいと思います。 – lostsoul29

答えて

0

を私は角度でサービスを設定することができたし、1.3をMETEORあなたがやったことをするだけでなく、 "ngInject"を追加することによって。コンストラクタに渡します。 `$ scope`、` $ reactive`、 `$ state`は正しく注入されていますか?

class Login { 
    constructor($scope, $reactive, $state, myService) { 
     "ngInject"; //this is needed to inject 
     console.log(userService.getStuff()); 
    } 
} 

// create a module 
export default angular.module(name, [ 
    angularMeteor 
]).component(name, { 
    templateUrl: 'imports/ui/components/${name}/${name}.html', 
    controllerAs: name, 
    controller: Login 
}).service("userService", function() { 
    this.getStuff = function() { 
     return "Got Stuff"; 
    }; 
});; 
関連する問題