参数“[controllerName]”在转换为TypeScript时不是未定义的NaNunction

Argument '[controllerName]' is not aNaNunction, got undefined, when converting to TypeScript

本文关键字:TypeScript 未定义 NaNunction 转换 controllerName 参数      更新时间:2023-09-26

开始使用 TypeScript。我在没有 TypeScript 的情况下工作,但在转换时出现错误。

我有以下控制器:

"use strict"
module app.blogApp {
    class BaHomeController {
        entries: any[];
        static $inject = ["$http"];
        constructor(
            private $http
        ) {
            this.loadEntries();
        }
        private loadEntries() {
            this.$http.get("api/blogEntries").then(function(response) {
                this.entries = response.data;
            });
        }
    }
}

转译为:

"use strict";
var app;
(function (app) {
    var blogApp;
    (function (blogApp) {
        var BaHomeController = (function () {
            function BaHomeController($http) {
                this.$http = $http;
                this.loadEntries();
            }
            BaHomeController.prototype.loadEntries = function () {
                this.$http.get("api/blogEntries").then(function (response) {
                    this.entries = response.data;
                });
            };
            BaHomeController.$inject = ["$http"];
            return BaHomeController;
        })();
    })(blogApp = app.blogApp || (app.blogApp = {}));
})(app || (app = {}));

通过 HTML 加载:

<section data-ng-controller="BaHomeController as vm"></section>

为什么会生成角度误差:

错误: ng:areq 糟糕的论点 参数"BaHomeController"不是NaNunction,未定义

我读到这意味着 Angular 可能无法找到控制器。使用此新语法,如何验证控制器名称是否正确?

PS 什么是 aNaNunction?

您在某处缺少这样的行(假设您尚未注册模块):

angular.module('blogApp', []).controller('BaHomeController', app.blogApp.BaHomeController);