在单独的文件中动态注册AngularJS控制器时出错

时间:2015-01-22 15:38:39

标签: ruby-on-rails angularjs

所以我是一个Angular noob试图将AngularJS引入已经存在的RoR环境。

由于它是一个相对繁重且功能强大的网络应用程序,我认为最好的方法是为其中的每个部分编写一个控制器。自己的文件(咖啡,用于记录),并通过$ routeProvider加载它,通过做这样的事情动态注册控制器(省略不相关的部分):

app.config [
   "$routeProvider", "$controllerProvider", 
   ($routeProvider, $controllerProvider) ->
      app.registerCtrl = $controllerProvider.register
      $routeProvider
         .when("url1",
           templateUrl: "url1.html.haml"
           controller: "url1Ctrl"
         )
         .when("url2"
           templateUrl: "url2.html.haml"
           controller: "url2Ctrl"
         )
         .otherwise redirectTo: "/homepage"

我在布局文件中加载主js文件(以及上面的代码片段),并在适当的视图中加载每个指定的控制器文件(显然是动态的)。在每个中,我尝试使用以下方法加载相关的控制器:

@url1Ctrl = app.registerCtrl 'url1Ctrl', [
   '$scope', ....., 
   ( $scope, ....) ->
     # some logic

问题是,我收到错误说" Uncaught TypeError:undefined不是函数"。我以为我对provider function做错了什么,但似乎我在那里是一个合法的公民。 还在SO上阅读了一堆类似的问题:

How to separate Controller file in angularjs(基本上使用" .controller"而不是注册?没有为我工作)

Separating Controllers in AngularJS(同样的想法)

How to create separate AngularJS controller files?(同样,但控制器文件总是被加载,而不是动态延迟加载...)

Loading an AngularJS controller dynamically(看起来像过度复杂?)

AngularJS Controller Not Registering(试了一下,看起来不是同样的问题)

会喜欢Angular I的哪一部分在这里曲解错误。

0 个答案:

没有答案