我正在尝试使用Angular 1和TypeScript 2为我的项目中的脚本引入一个干净的文件夹结构。我想有一个文件app.ts,我将在其中声明我的应用程序和控制器,服务等。然后在单独的文件夹中像控制器我想将我的控制器保存在单独的文件中。
当我尝试使用命名空间和单独的类时,我现在所做的不能正常工作。如果我将控制器声明完全放在一个单独的文件中使用构造函数而不是命名空间,如下例所示,它工作正常。当我运行应用程序时,我可以看到两个javascript错误:
-Uncaught ReferenceError:未定义TypeScript,在app.ts:6(在这种情况下TypeScript是我的命名空间)
-Error:[ng:areq] Argument' BrowseMovieTicketsController'不是一个函数,未定义http://errors.angularjs.org/1.4.10/ng/areq?p0=BrowseMovieTicketsController&p1=not%20a%20function%2C%20got%20undefined
在我的html文件部分中,脚本包含在此顺序中:
<script src="/bower_components/angular/angular.js"></script>
<script src="/Scripts/TypeScript/app.js"></script>
<script src="/Scripts/TypeScript/Services/MovieInformationService.js"></script>
<script src="/Scripts/TypeScript/Controllers/BrowseMovieTicketsController.js"></script>
index.html的正文
<div ng-app="myApp" ng-controller="BrowseMovieTicketsController">
<a ng-click="GetMovie()">Test</div></div>
文件app.ts:
/// <reference path="./../Scripts/typings/angularjs/angular.d.ts"/>
var myApp = angular.module('myApp', []);
//Controllers
myApp.controller("BrowseMovieTicketsController", TypeScript.Controllers.BrowseMovieTicketsController);
//Services
myApp.service("MovieInformationService", TypeScript.Services.MovieInformationService);
文件BrowseMovieTicketsController.ts:
/// <reference path="./../../Scripts/typings/angularjs/angular.d.ts"/>
namespace TypeScript.Controllers {
export class BrowseMovieTicketsController {
scope: any;
movieInformationService: Services.MovieInformationService;
static $inject = ["$scope", "MovieInformationService"];
constructor($scope: any, MovieInformationService: Services.MovieInformationService) {
this.scope = $scope;
this.movieInformationService = MovieInformationService;
}
}
}
文件MovieInformationService.ts:
namespace TypeScript.Services {
"use strict";
export class MovieInformationService {
public GetMovie() {
console.log("hello");
}
}
}
答案 0 :(得分:0)
您需要在模块中声明控制器。 试试这个:
$this->_sessionName = config::get('session/session_name');
声明您的服务相同