angular显示TypeError:无法读取未定义的属性“state”

时间:2016-01-30 03:25:07

标签: javascript ruby-on-rails angularjs

我正在尝试通过使用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是我想要路由的网址。有人能告诉我这里做错了什么。

1 个答案:

答案 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) {
 ...
}):