0

ここで説明されているように、Angular で Typescript を使用しています http://www.youtube.com/watch?v=WdtVn_8K17E

class MyController {
    thescope: any;
    static $inject = ['$scope'];

    constructor($scope) {
        $scope.vm = this;
        this.thescope = $scope;
    }

    ...
}

このコントローラーのインスタンスを作成したいと思います。$scope パラメータとして何を使用する必要がありますか?

var mc = new MyController(whatParameterHere?); // 
4

5 に答える 5

1

コントローラーとディレクティブの間で呼び出す共通のメソッドを探している場合は、サービスを使用してください。

dom を操作したい場合は、ディレクティブを使用してください。

あなたの質問に答えるには:

module myApp.ctrl {
    myApp.controller("MyController", function($scope) {
        return new MyController($scope);
    }

    class MyController {
        thescope: any;
        static $inject = ['$scope'];

        constructor($scope) {
            $scope.vm = this;
            this.thescope = $scope;
        }

        ...
    }
}
于 2013-12-26T20:13:28.953 に答える
1

コントローラーではなくサービスを使用する必要があります。

サービスに注入して、アプリでその関数を呼び出すことができます。

たとえば、API からデータを呼び出したい場合:

module Data {
    export interface IDataService {
        http:ng.IHttpService;
        fetch:()=>ng.IPromise<string>;
    }
    export class DataService implements IDataService{
        http:ng.IHttpService;

        static $inject = ["$http"];
        constructor($http:ng.IHttpService) {
            this.http = $http;
        }

        fetch():ng.IPromise<string> {
            return this.http.get("link");
        }
    }
}
angular.module("app").service("DataService", Data.DataService);

jstree のようなプラグインを使用する場合は、そのためのディレクティブを作成し、その中に DataService を挿入して、必要な関数を使用する必要があります。

于 2015-06-11T08:26:38.507 に答える
0

他の人が示唆しているように、これを自分で行うべきではありません。角度は自分で行います。

ただし、$scope を文字列として渡すだけで実行できます。angular が DI を行うため、コードは次のようになります。

var mc = new MyController("$scope"); 
于 2014-07-17T09:53:06.427 に答える