【问题标题】:Argument 'SearchController' is not a function, got undefined参数“SearchController”不是函数,未定义
【发布时间】:2016-12-17 06:55:32
【问题描述】:

这是我的代码,大大简化了, 我的问题是 - 为什么我会收到此错误消息?

[ng:areq] 参数 'SearchController' 不是函数,未定义

http://errors.angularjs.org/1.5.8/ng/areq?p0=SearchController&p1=not%20aNaNunction%2C%20got%20undefined

index.cshtml

<!DOCTYPE html>
<html ng-app="app">
    <head>
        <script src="~/Components/angular/angular.min.js"></script>
        <script src="~/Scripts/Common/app.js"></script>
    </head>
    <body>
        <div ng-view></div>
    </body>
</html>

app.ts

namespace App {

    export let app = angular.module("app", ["ngRoute", "ngSanitize"]);

    // Defined custom routes for using "ng-view" directive, 
    // enable single page application (SPA) functionality

    app.config(function ($routeProvider) {
        $routeProvider
            .when("/", {
                templateUrl: "/RealSuiteApps/RealForm/-1/MyForm/Search/",
                controller: "SearchController",
                controllerAs: "vm"
            })
            .when("/Detail/:id", {
                templateUrl: "/RealSuiteApps/RealForm/-1/MyForm/Detail/",
                controller: "DetailController",
                controllerAs: "vm"
            })
            .otherwise({ redirectTo: "/" });
    });
}

search.cshtml - 调用上面定义的 templateUrl 返回的 HTML:/RealSuiteApps/RealForm/-1/MyForm/Search/ (为本演示简化)

<script src="~/Scripts/MyForm/search.controller.js"></script>

<div class="container">

    <h1>Hello from Search Controller</h1>

</div>

控制器search.controller.js

namespace App {

    /**
     * SearchController
     */
    class SearchController {

        static $inject: string[] = ["DataService"];

        constructor(private dataService: DataService) { }

    }

    app.controller("SearchController", SearchController);
}

【问题讨论】:

  • 检查文件是否确实在浏览器中加载成功。

标签: angularjs typescript


【解决方案1】:

看起来您仅在搜索视图中加载了search.controller.js 文件,但路由甚至在此之前实例化了控制器,如果您还没有加载脚本,他就不能这样做。

解决方案是在应用的开头加载它。

【讨论】:

  • 绝对!谢谢,我想 - 如果加载了搜索视图,它将自动连接到先前加载的脚本的上下文,因为它们在内存中运行,但是,不......它没有这样做,将所有脚本引用移动到主页可以解决问题。
猜你喜欢
  • 2013-03-22
  • 2015-09-10
  • 2016-10-28
  • 2016-05-22
  • 2014-06-29
  • 1970-01-01
  • 2017-01-13
  • 2015-05-17
  • 1970-01-01
相关资源
最近更新 更多