【问题标题】:Argument '[controllerName]' is not aNaNunction, got undefined, when converting to TypeScript转换为 TypeScript 时,参数 '[controllerName]' 不是 aNaNunction,未定义
【发布时间】:2016-01-25 19:12:19
【问题描述】:

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>

为什么会产生 Angular 错误:

错误:ng:areq 不好的论点 参数 'BaHomeController' 不是 NaNunction,未定义

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

PS 什么是 aNaNunction?

【问题讨论】:

  • 您需要发布打字稿
  • 你实际在哪里注册控制器?
  • 糟糕。添加它@CHBuckingham
  • 你能澄清@RyanCavanaugh 吗?我使用控制器作为语法,所以路由定义了模板。模板指定使用哪个控制器,上面的控制器定义应该定义控制器

标签: javascript angularjs typescript


【解决方案1】:

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

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

【讨论】:

  • 嗯,我得弄清楚如何在 TypeScript 中做到这一点
  • 好吧,如果你安装了 angular.d.ts (DefinitelyTyped for angular),那么上面的代码就是你在 TypeScript 中的操作方式。只需在任何控制器之外的 TypeScript 模块中执行此操作即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2020-03-03
  • 1970-01-01
  • 2013-03-22
  • 2018-10-19
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多