0
我收到此错误:错误:没有模块:ngResource(节点/快递与角)
Error: No module: ngResource
我已经包含在我的index.html文件的脚本参考,像这样(连同ngRoute, ngSanitize, ngCookies
,和一个名为angularjs.media.directive.js
指令):
<script src="/js/angular-resource.js"></script>
这是我server.js文件,在这里我说的“用”静态文件夹public
- 我还设置了views
文件夹:
app.configure(function() {
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
});
我的javascript文件位于/public/js
文件夹 - 我是否正确加载脚本?提前致谢。
脚本的顺序:
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script src="/js/angular-resource.js"></script>
<script src="/js/angular-cookies.js"></script>
<script src="/js/angular-sanitize.js"></script>
<script src="/js/angular-route.js"></script>
<script src="/js/angularjs.media.directive.js"></script>
<script src="/js/leader-board.js"></script>
leader-board.js
是在模块注入。
其他错误:
TypeError: angular.$$minErr is not a function
var $sanitizeMinErr = angular.$$minErr('$sanitize');
它看起来像媒体指令被加载两次 - 从index.html
曾经socket.io
和一次:
"NetworkError: 404 Not Found - http://localhost:8000/js/angularjs.media.directive.js"
GET http://localhost:8000/socket.io/1/?t=1400937921919 200 OK 1ms
"NetworkError: 404 Not Found - http://localhost:8000/js/angularjs.media.directive.js" socket.io.js (line 1659)
根据要求:
leader-board.js
var app = angular.module('app', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'angularjs.media.directives'
]);
app.directive('contestant', function(socket) {
var linker = function(scope, element, attrs) {
element.hide().fadeIn();
};
var controller = function($scope) {
// Incoming
socket.on('onContestantUpdated', function(data) {
// Update if the same contestant
if(data.id == $scope.contestant.id) {
$scope.contestant.display_name = data.display_name;
$scope.contestant.score = Number(data.score);
}
});
// Outgoing
$scope.updateContestant = function(contestant) {
socket.emit('updateContestant', contestant);
};
$scope.deleteContestant = function(id) {
$scope.ondelete({
id: id
});
};
};
return {
restrict: 'A',
link: linker,
controller: controller,
scope: {
contestant: '=',
ondelete: '&'
}
};
});
app.factory('socket', function($rootScope) {
var socket = io.connect();
return {
on: function(eventName, callback) {
socket.on(eventName, function() {
var args = arguments;
$rootScope.$apply(function() {
callback.apply(socket, args);
});
});
},
emit: function(eventName, data, callback) {
socket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if(callback) {
callback.apply(socket, args);
}
});
});
}
};
});
app.config(function ($routeProvider, $locationProvider, $httpProvider) {
$routeProvider
.when('/startup', {
templateUrl: 'views/startup.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
// Intercept 401s and redirect you to login
/*$httpProvider.interceptors.push(['$q', '$location', function($q, $location) {
return {
'responseError': function(response) {
if(response.status === 401) {
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
};
}]);*/
});
app.controller('MainCtrl', function($scope, socket) {
$scope.contestants = [];
socket.emit('listContestants');
// Incoming
socket.on('onContestantsListed', function(data) {
$scope.contestants.push.apply($scope.contestants, data);
});
socket.on('onContestantCreated', function(data) {
$scope.contestants.push(data);
});
socket.on('onContestantDeleted', function(data) {
$scope.handleDeleteContestant(data.id);
});
var _resetFormValidation = function() {
$("input:first").focus();
var $dirtyInputs = $("#ldrbd").find(".new input.ng-dirty")
.removeClass("ng-dirty")
.addClass("ng-pristine");
};
// Outgoing
$scope.createContestant = function(display_name, score) {
var contestant = {
id: new Date().getTime(),
display_name: display_name,
score: Number(score)
};
$scope.contestants.push(contestant);
socket.emit('createContestant', contestant);
_resetFormValidation();
};
$scope.deleteContestant = function(id) {
$scope.handleDeleteContestant(id);
socket.emit('deleteContestant', {id: id});
};
$scope.handleDeleteContestant = function(id) {
console.log('HANDLE DELETE CONTESTANT', id);
var oldContestants = $scope.contestants,
newContestants = [];
angular.forEach(oldContestants, function(contestant) {
if(contestant.id !== id) {
newContestants.push(contestant);
}
});
$scope.contestants = newContestants;
}
});
// misc form validation stuff
$(function(){
setTimeout(function(){
// wait till angular is done populating the list
// focus the first field
$("input:first").focus();
var $requiredInputs = $("#ldrbd").find("input[required]:not('.ng-dirty')");
$requiredInputs.on("blur", function(){
$(this)
.removeClass("ng-pristine")
.addClass("ng-dirty")
.attr({
placeholder: "Required"
});
});
}, 100);
});
@Gary佩里 - 知道任何关于节点/快递/角? – ewizard
请粘贴如何定义应用程序模块及其依赖关系的代码。 – callmekatootie
@callmekatootie - 听起来不错 - 一秒 – ewizard