Angularjs 在单独的typescript文件中使用角度工厂
我在一个文件(Movie.ts)中定义工厂,如下所示: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'); } })()
(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,最好使用类吗?