0

我正在使用 typescript 和 requirejs 一起设置一个有角度的网站。我让它工作到可以异步加载我的控制器并在将容纳我的控制器的范围内设置一个变量的程度:

///<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。

4

1 回答 1

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);
});
于 2015-10-18T06:48:47.900 回答