我刚开始尝试使用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的最新文档,这似乎是正确的。
提前感谢您的任何帮助!
答案 0 :(得分:2)
这个字符串是什么意思?
Kr.controller("WeatherCtrl", ['ui.state'])
我猜你试图定义WeatherCtrl
控制器,但是提供了数组['ui.state']
而不是控制器功能。
试试这个:
Kr.controller("WeatherCtrl", function($scope) {
// Controller logic...
})
答案 1 :(得分:0)
解决
对于有类似问题的任何人,我试图在控制器中定义它。完全错了。我还没有意识到这需要在整个应用程序中使用angular.module进行定义。
任何试图指出我误解的人。