Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';ShouldWorkController';这不是一个函数。没有定义_Javascript_Angularjs_Typescript_Angular Ui Router - Fatal编程技术网

Javascript ';ShouldWorkController';这不是一个函数。没有定义

Javascript ';ShouldWorkController';这不是一个函数。没有定义,javascript,angularjs,typescript,angular-ui-router,Javascript,Angularjs,Typescript,Angular Ui Router,当我尝试使用angular ui router$stateProvider将控制器绑定到模板时,遇到以下错误: 'ShouldWorkController' is not a function. Got undefined. 但是,当我使用ng controller在模板中声明控制器时,一切都正常。这里可能出了什么问题 app.ts shouldWorkController.ts ShouldWork.html ^---这个很好用 该消息意味着该控制器“应工作控制器”未加载到主角度模块中。请

当我尝试使用angular ui router$stateProvider将控制器绑定到模板时,遇到以下错误:

'ShouldWorkController' is not a function. Got undefined.
但是,当我使用ng controller在模板中声明控制器时,一切都正常。这里可能出了什么问题

app.ts shouldWorkController.ts ShouldWork.html

^---这个很好用

该消息意味着该控制器
“应工作控制器”
未加载到主角度模块中。请确保在结束时调用注册表:

module App.MyControllers {    
    ...
    class ShouldWorkController implements IShouldWorkViewModel {}    
}

// we have to register this controller into some module (MyControllers)
// which is also referenced in the main app module
angular.module('MyControllers')
    .controller('ShouldWorkController', App.MyControllers.ShouldWorkController ); 

我意识到这是老生常谈,但我是通过谷歌带着同样的问题来到这里的,不是第一次。要检查的内容包括:

  • 为您的控制器类导出语句。从您发布的代码中,我发现您缺少
    ShouldWorkController
    类的
    Export
    语句。这可能不是你的问题,但你应该检查一下。我可以通过从控制器类中删除export语句来重现此错误
  • 检查HTML模板是否存在(如果使用UI路由器)。如UI路由器文档中所述:“如果未定义模板,则不会实例化控制器。”
  • 在与控制器相同的文件中注册控制器。一些教程确实演示了在模块文件中注册控制器。虽然这确实有效,但我个人发现它比直接在控制器文件中注册控制器更容易出错
  • 检查您的打字脚本引用。确保将typescript引用(例如,
    //
    )添加到包含引用的任何类型的typescript文件中
  • 检查控制器名称是否与$stateProvider配置中声明的名称匹配。

  • 我正在使用grunt tsng,它可以在构建时自动注册控制器等,也可以正常工作(否则模板中的控制器声明将无法正常工作)。消息很清楚-
    angular.module('app',[…])
    无法访问您的控制器。这就是信息。因此,通过grunt注册的东西无法正常工作。主模块没有注册此名称。这有帮助吗?我理解你的意思,这对我来说毫无意义,因为这里需要的一切都在那里(并且使用“ng controller”绑定控制器工作得非常好)。从生成的js代码中摘录:
    (函数(App){function(MyControllers){var ShouldWorkController=(函数()…
    和更高版本的
    angular.module(“App.MyControllers”).controller(“ShouldWorkController,
    现在的重点是:我真的会怀疑:模块应用程序缺少该控制器模块。请检查两次,确保您看到
    angular.module(“app”,[“app.MyControllers”,…]))
    。这就是95%的原因。剩下的5%是控制器生成的文件没有嵌入到页面中。我几乎可以肯定。。。
    module App.MyControllers {
    
        interface IShouldWorkViewModel {
    
        }
    
        class ShouldWorkController implements IShouldWorkViewModel {}
    
    }
    
    <div ng-controller="ShouldWorkController as viewModel" us-spinner spinner-key="spinner-1">
                     ^ --- this works nicely
    
    module App.MyControllers {    
        ...
        class ShouldWorkController implements IShouldWorkViewModel {}    
    }
    
    // we have to register this controller into some module (MyControllers)
    // which is also referenced in the main app module
    angular.module('MyControllers')
        .controller('ShouldWorkController', App.MyControllers.ShouldWorkController );