我在一个文件(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是工厂?我尝试将Movie导出为类,但我不知道如何将工厂转换为TypeScript类。
这适用于JavaScript,示例来自this tutorial。
答案 0 :(得分:0)
好吧,我还在学习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();