Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 涉及'的角度控制器;ui.state';抛出错误:参数';控制器';不是函数,获取字符串_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 涉及'的角度控制器;ui.state';抛出错误:参数';控制器';不是函数,获取字符串

Javascript 涉及'的角度控制器;ui.state';抛出错误:参数';控制器';不是函数,获取字符串,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我刚刚开始使用github的angular ui路由器进行试验,以使用状态,而不是混乱的路由。我已经编写了一个控制器,并将其包含在所有捆绑文件、html等中。但是,当我在本地主机上导航到该页面时,它会在chrome控制台中抛出以下错误:“错误:[ng:areq]参数'WeatherCtrl'不是函数,而是字符串” 以下是我的角度代码: Kr.controller("WeatherCtrl", ['ui.state']) .config(['$stateProvider', fun

我刚刚开始使用github的angular ui路由器进行试验,以使用状态,而不是混乱的路由。我已经编写了一个控制器,并将其包含在所有捆绑文件、html等中。但是,当我在本地主机上导航到该页面时,它会在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>

  • 6至10天预测
  • 8至14天预测
  • 三个月展望

请使用上面的按钮选择预测类型

奇怪的是,当页面的状态为“weather”时,段落元素会显示出来,但我不能确定这是否是因为ui sref被忽略,而段落只是作为一个独立的元素插入。此外,我确实认识到angular应用程序的语法有点时髦,但根据angular ui router的最新文档,它似乎是正确的


提前感谢您的帮助

这个字符串是什么意思

Kr.controller("WeatherCtrl", ['ui.state'])
我猜您试图定义
WeatherCtrl
控制器,但提供了数组
['ui.state']
,而不是控制器函数

试试这个:

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

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


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

@Cain Mathis我对此也感到困惑。另外,在HTML模板中不使用ng控制器可能更干净。。。而是在状态定义中指定控制器。您可以将控制器与任何/所有状态关联,就像将模板与每个状态关联一样。@SunilD。我不确定在状态定义中指定控制器是什么意思。你的意思是:函数($stateProvider.nws)?或者我需要在每个var状态中指定它吗?@Alexei这是github和scotch上提供的文档,它不是stock AngularJS,因此,据我所知,它需要稍微不同的语法安排。见: