Angular Controller涉及' ui.state'抛出错误:参数'控制器'不是一个函数,得到了字符串

时间:2014-10-06 16:31:03

标签: javascript angularjs angular-ui-router

我刚开始尝试使用github中的angular-ui-router来使用状态而不是路由的混乱。我编写了一个控制器并将其包含在我的所有捆绑文件,html等中。但是,当我导航到我的localhost上的页面时,它会在chrome控制台中抛出以下错误:"错误:[ng:areq ]论证' WeatherCtrl'不是一个函数,得到字符串"。

以下是我的角度代码:

Kr.controller("WeatherCtrl", ['ui.state'])
   .config(['$stateProvider',
     function($stateProvider) {

       var weather = {
         name: 'weather',
         url: '/nws',
         abstract: true,
         templateUrl: 'partials/webtools/nws/weatherDefault.html'
       };

       var smallWeather = {
         name: 'smallWeather',
         url: '/nws/shortForecast',
         parent: weather,
         templateUrl: 'partials/webtools/nws/shortForecast'
       };

       var mediumWeather = {
         name: 'mediumWeather',
         url: '/nws/mediumForecast',
         parent: weather,
         templateUrl: 'partials/webtools/nws/mediumForecast'
       };

       var bigWeather = {
         name: 'bigWeather',
         url: '/nws/longForecast',
         parent: weather,
         templateUrl: 'partials/webtools/nws/longForecast'
       };

       $stateProvider
         .state(weather)
         .state(smallWeather)
         .state(mediumWeather)
         .state(bigWeather);
     }
   ]);

这是相关的HTML代码:

<div ng-controller ="WeatherCtrl">
<div class="span11">
  <ul class="a-btn-group text-center">
    <li ui-sref-active="active" class="item">
      <a ui-sref=".smallWeather" class="btn btn-primary">
      <i class="fa fa-bolt"></i> 6 to 10 Day Forecast</a>
    </li>
    <li ui-sref-active="active" class="item">
      <a ui-sref=".mediumWeather" class="btn btn-primary">
      <i class="fa fa-bolt"></i> 8 to 14 Day Forecast</a>
    </li>
    <li ui-sref-active="active" class="item">
      <a ui-sref=".bigWeather" class="btn btn-primary">
      <i class="fa fa-bolt"></i> Three Month Outlook</a>
    </li>
  </ul>
</div>
<p ui-sref=='weather'>Please select a Forecast Type using the buttons above</p>
</div>

奇怪的是,当页面处于状态“天气”时会显示段落元素,但是我不能确定这是因为ui-sref被忽略而段落只是插入本身作为一个独立的元素。此外,我确实认为角度应用程序的语法略显时髦,但根据angular-ui-router的最新文档,这似乎是正确的。

提前感谢您的任何帮助!

2 个答案:

答案 0 :(得分:2)

这个字符串是什么意思?

Kr.controller("WeatherCtrl", ['ui.state'])

我猜你试图定义WeatherCtrl控制器,但是提供了数组['ui.state']而不是控制器功能。

试试这个:

Kr.controller("WeatherCtrl", function($scope) {
   // Controller logic...
})

答案 1 :(得分:0)

解决

对于有类似问题的任何人,我试图在控制器中定义它。完全错了。我还没有意识到这需要在整个应用程序中使用angular.module进行定义。

任何试图指出我误解的人。