Angularamd在打字稿控制器注册

时间:2015-04-04 17:30:19

标签: javascript angularjs requirejs angular-amd

我正在使用typescript设置一个角度和requirejs的网站。 我让它工作到一个点,我可以异步加载我的控制器并在范围内设置一个varbele来保持我的控制器:

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

在我的viewtemplate中,我可以像这样访问变量测试

{{ vm.test }}

正如你所看到的,我必须用&#34; vm。&#34;它开始觉得有点低效。我想知道是否可以将typescript中的控制器直接绑定到视图中,所以我不必将其保存在范围内并用vm作为前缀。

我试着简单地说:

<div ng-controller="AppController">
      {{ test }}
</div>

但是这会引发一个错误,一旦我的视图加载,它就无法找到appcontroller。

1 个答案:

答案 0 :(得分:0)

我知道它在AppController类之后注册你的控制器。

///<reference path="./../typings/tsd.d.ts" />
import App = require("../Start");


class AppController {

    public test: string = "tedast";
    constructor(scope: ng.IScope) {

    }
}

App.application.app.register.controller("AppController",($scope: ng.IScope) => {
    $scope["vm"] = new AppController($scope);
});