2015-06-19 40 views
0

採用了棱角分明的工廠我在一個文件中(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,示例取自this tutorial

+0

應該看看這個http://stackoverflow.com/a/24058604/2435473 –

+0

我不是要批評,但在這些例子中沒有TS的舔。你可能會更好地跟隨那個只有JS的教程,然後一旦掌握了角度工程的迴歸並開始在TS中編寫它。此外pankajparkar鏈接是好的,但更多的TS處理方式實際上是@basarat給這個問題的答案。 –

+0

對不起,不清楚。我正在重寫TypeScript中的教程以更好地理解TypeScript。上面的片段是100%的JavaScript,並直接從教程中撕掉。我已經在我的TS文件中重寫了它們(儘管很糟糕)。你能舉一個例子說明這兩個片段如何轉換成TypeScript,最好是使用類? – mikeesouth

回答

0

嗯,我還在學習打字稿,我不知道這是否可以幫助任何人,但我通過第一工廠改寫到服務解決了上述問題,因爲這樣的:

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(); 

使用$資源來創建一個新的實體的簡化的例子是:

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