Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在单独的typescript文件中使用角度工厂_Angularjs_Typescript - Fatal编程技术网

Angularjs 在单独的typescript文件中使用角度工厂

Angularjs 在单独的typescript文件中使用角度工厂,angularjs,typescript,Angularjs,Typescript,我在一个文件(Movie.ts)中定义工厂,如下所示: (function () { 'use strict'; angular .module('moviesServices', ['ngResource']) .factory('Movie', Movie); Movie.$inject = ['$resource']; function Movie($resource) { return $resource('/api/movies/:id'); } })()

我在一个文件(Movie.ts)中定义工厂,如下所示:

(function () {
'use strict';

angular
    .module('moviesServices', ['ngResource'])
    .factory('Movie', Movie);

Movie.$inject = ['$resource'];

function Movie($resource) {
    return $resource('/api/movies/:id');
}
})();
然后我尝试在另一个文件(MoviesController.ts)中使用它,注意它是TypeScript:

function MoviesAddController($scope, $location, Movie) {
    $scope.movie = new Movie();
    $scope.add = function () {
        $scope.movie.$save(function () {
            $location.path('/');
        });
    };
}
TypeScript现在抱怨“new Movie();”,并显示错误消息“无法解析符号'Movie'

我如何定义电影是一个工厂?我尝试将电影作为类导出,但不知道如何将工厂转换为TypeScript类


这在JavaScript中工作,示例取自。

好吧,我还在学习TypeScript,我不知道它是否对任何人都有帮助,但我通过首先将工厂重写为服务解决了上述问题,如下所示:

export class WebApiService
{
    static $inject = ["$resource"];
    constructor(private $resource: ng.resource.IResourceService)
    {
    }

    public movies()
    {
        return this.$resource("/api/movies/:id");
    }
}
app.service("webApiService", WebApiService);
然后,在控制器中,我使用了以下代码:

var Movie = webApiService.movies();
$scope.movie = new Movie();
使用$resource创建新实体的简化示例如下:

var Movie = $resource("/api/movies/:id");
$scope.movie = new Movie();

我不想批评,但在这些例子中没有一点TS。您最好只使用JS阅读该教程,一旦您掌握了angular的工作原理,就回来用TS编写。pankajparkar链接也不错,但TS处理这一问题的更多方式实际上就是@basarat对该问题的回答。很抱歉不清楚。我正在用TypeScript重写教程,以便更好地理解TypeScript。上面的代码片段是100%JavaScript,直接取自教程。我已经在我的TS文件中重写了它们(尽管可能很糟糕)。您能举一个例子说明如何将这两个代码段转换为TypeScript,最好使用类吗?