0

angularjsとtypescriptを使用してWebアプリを構築しようとしていますが、コントローラーの1つにサービスを注入しようとして完全に行き詰まっています。

サービス

var mod= angular.module("servicemodul", []);

class Service
{
http: ng.IHttpService;
q: ng.IQService;
private user: User;

static $inject = ["$http", "$q"];

constructor($http: ng.IHttpService, $q:ng.IQService)
{

}

}

mod.service('Service',["$http", "$q", function ($http, $q) {
return new Service($http, $q);
}]);

コントローラ

angular.module("app", ["servicemodul"])

class MainController
{

scope: ng.IScope;
http: ng.IHttpService;
service: Service;



static $inject = ["$scope", "$http", "Service"];

constructor($scope: ng.IScope, $http: ng.IHttpService, service: Service)
{
    this.http = $http;
    this.scope = $scope;
    this.Service= service;
    (<any>this.scope).Main = this;
}

public Init()
{

}
}

実際のページを読み込むと、開発者コンソールに次のように表示されます。

 Unknown provider: ServicePorvider <- Service

問題は、srevice がモジュールに登録されている部分である必要があります。既に module.factory() メソッドを試しましたが、同じエラーが発生します。また、生成されたすべての js ファイルが正しい順序 (コントローラーの前にサービス) で読み込まれることも確認しました。

別の小さな質問: サービスとコントローラーに異なるモジュールを用意することは理にかなっていますか、それともすべてを 1 つのモジュールに入れることは可能ですか (アプリ全体が小さいと仮定して)

4

1 に答える 1

2

コントローラーをモジュールに登録する必要があります。

var appMod = angular.module("app", ["servicemodul"])
appMod.controller('MainController',MainController); 

そうしないと、コントローラーは認識しませんservicemodul

于 2013-10-17T03:47:45.847 に答える