typescriptを使用してrequirejsとともにAngularでサイトを設定しています。コントローラーを非同期にロードし、コントローラーを保持するスコープに変数を設定できるようになりました。
///<reference path="./../typings/tsd.d.ts" />
import App = require("../Start");
App.application.app.register.controller("AppController",($scope: ng.IScope) => {
$scope["vm"] = new AppController($scope);
});
class AppController {
public test: string = "tedast";
constructor(scope: ng.IScope) {
}
}
次のようにJavaScriptにコンパイルされます。
define(["require", "exports", "../Start"], function (require, exports, App) {
App.application.app.register.controller("AppController", function ($scope) {
$scope["vm"] = new AppController($scope);
});
var AppController = (function () {
function AppController(scope) {
this.test = "tedast";
}
return AppController;
})();
});
そして、私のビューテンプレートでは、変数テストに次のようにアクセスできます
{{ vm.test }}
ご覧のとおり、すべてにプレフィックス「vm」を付ける必要があります。少し効率が悪いと感じ始めています。タイプスクリプトのコントローラーをビューに直接バインドできるかどうかを知りたいので、スコープに保存してvmの前に付ける必要はありません。
私は単純にしようとしました:
<div ng-controller="AppController">
{{ test }}
</div>
しかし、ビューが読み込まれるとappcontrollerが見つからないというエラーがスローされます。