我正在尝试通过使用angular替换ajax将路由添加到我的rails应用程序中的特定页面来学习路由。下面是控制台错误。
未捕获错误:[$ injector:modulerr]无法实例化模块 testApp由于:TypeError:无法读取未定义的属性“state”
这就是我定义的方式。
app.js
app = angular.module("testApp", ['ui.router']);
app.config([
function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('mylistings', {
url: '/mylistings',
templateUrl: '/views/mylistings.html',
controller: 'dashboardCtrl'
});
}
]);
app.controller('dashboardCtrl', function ($scope, $http, $stateParams) {
$scope.testing="testdata"
});
mylistings.html
{{testing}}
在这种情况下,http://localhost:3000/dashboard
是我想要路由的网址。有人能告诉我这里做错了什么。
答案 0 :(得分:1)
问题在于配置功能的定义。
如果使用数组app.config([])
,则表示您为为缩小而准备的依赖项编写安全代码。语法是:
app.config(['$arg1', '$arg2', function ($arg1, $arg2) {
}]);
因此,当代码缩小时,您将得到类似的内容:
app.config(['$arg1', '$arg2',function(a,b) {}]);
在 app.js 的示例中,如果您想编写安全的代码(如果您没有使用ng-annotate),请将配置更改为以下代码:
app = angular.module("testApp", ['ui.router']);
app.config(['$stateProvider','$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('mylistings', {
url: '/mylistings',
templateUrl: '/views/mylistings.html',
controller: 'dashboardCtrl'
});
}
]);
app.controller('dashboardCtrl', function ($scope, $http, $stateParams) {
$scope.testing="testdata"
});
或者您可以从配置功能中删除[]
:
app.config(function ($stateProvider, $urlRouterProvider) {
...
}):