Angular JS/Rube-on-Rails-控制器未识别错误
Angular JS / Ruby on Rails - controller not recognised error
我一直在学习Thinkster教程来实现Angular JS/Rube-on-Rails应用程序,但遇到了一些困难。
我的控制器没有被识别,尽管在检查内容时被列在页面的来源中。控制台错误Error: [ng:areq] Argument 'NavCtrl' is not a function, got undefined
突出显示了这一点。
我已经尝试了我能在网上找到的一切,但都无济于事。我目前唯一的猜测是,这是由于Angular、Rails、gem、依赖性的版本,或者是我没有考虑过的原因。或者是打字错误,但我没有发现!
最终的结果是加载一个空白页面,除了导航栏的内容,它在没有控制器逻辑的情况下呈现。我将在下面展示一些代码,如果需要其他答案,请告诉我。
这是application.html.erb
:
<!DOCTYPE html>
<html>
<head>
<title>Angular JS</title>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
<%= csrf_meta_tags %>
</head>
<!-- body -->
<body ng-app="flapperNews">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div ng-include="'nav/_nav.html'"></div>
<ui-view></ui-view>
</div>
</div>
<h1>DEBUG</h1>
</body>
</html>
app.js
,包含应用程序模块和视图配置:
angular.module('flapperNews', ['ui.router', 'templates', 'Devise'])
.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'home/_home.html',
controller: 'MainCtrl'
})
.state('posts', {
url: '/posts/{id}',
templateUrl: 'posts/_posts.html',
controller: 'PostsCtrl'
})
.state('login', {
url: '/login',
templateUrl: 'auth/_login.html',
controller: 'AuthCtrl',
onEnter: ['$state', 'Auth', function($state, Auth) {
Auth.currentUser().then(function (){
$state.go('home');
});
}]
})
.state('register', {
url: '/register',
templateUrl: 'auth/_register.html',
controller: 'AuthCtrl',
onEnter: ['$state', 'Auth', function($state, Auth) {
Auth.currentUser().then(function (){
$state.go('home');
});
}]
});
$urlRouterProvider.otherwise('home');
}]);
值得注意的是,在上面的两个文件之间,<div ng-include="'nav/_nav.html'"></div>
至少呈现了一些角度内容,而<ui-view></ui-view>
则显示"什么都没有"(无关链接)。
这是AWOL navCtrl.js
:
angular.module('flapperNews')
.controller('NavCtrl', [
'$scope',
'Auth',
function($scope, Auth){
console.log('nav controller loaded');
$scope.signedIn = Auth.isAuthenticated;
$scope.logout = Auth.logout;
Auth.currentUser().then(function (user){
$scope.user = user;
});
$scope.$on('devise:new-registration', function (e, user){
$scope.user = user;
});
$scope.$on('devise:login', function (e, user){
$scope.user = user;
});
$scope.$on('devise:logout', function (e, user){
$scope.user = {};
});
}]);
从控制台、时间线和来源来看,似乎所有相关文件都在加载,并且顺序正确。所以请帮忙!
谢谢,史蒂夫。
我想你忘了在.state('posts'…和.state)('home'…
.state('home', {
url: '/home',
templateUrl: 'home/_home.html',
controller: 'MainCtrl',
resolve: {
postPromise: ['posts', function(posts){
return posts.getAll();
}]
}
})
.state('posts', {
url:'/posts/{id}',
templateUrl: 'posts/_posts.html',
controller:'PostCtrl',
resolve: {
post: ['$stateParams', 'posts', function($stateParams, posts) {
return posts.get($stateParams.id);
}]
}
})
相关文章:
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery选择器错误:无法识别的表达式
- Angular JS/Rube-on-Rails-控制器未识别错误
- jquery 1.8.0语法错误,无法识别的表达式:>
- Jslint 无法识别错误排序函数的选项
- 如何修复 jQuery 1.8“语法错误,无法识别的表达式”错误
- 错误:错误:语法错误,无法识别的表达式:
- 属性选择器不起作用(语法错误、无法识别的表达式)
- HTML 无法识别我要求它运行的 javascript 文件,语法错误:意外的令牌“<”(匿名函数)script.js:
- 如何识别AngularJS中的错误[cdep]
- jQuery:语法错误,无法识别的表达式:.Marketing&通讯
- 识别以下代码中的错误
- 无法识别错误回调
- 如果背景为红色,则jQuery无法识别错误,看起来很容易但很固执
- 提交按钮警报框错误.如何识别错误并修复代码
- try-catch javascript语句中的未识别错误
- jQuery关键字无法识别错误
- javascript的一些bug,我甚至不能识别错误
- 如何识别错误标签的位置