Javascript Can';我没有正确的路线
我正在开发一个angularjs应用程序。我还是个新手,正在努力理解它 我已经组装了一个基本的应用程序,但我似乎无法让它正常运行。我的控制器代码如下:Javascript Can';我没有正确的路线,javascript,angularjs,Javascript,Angularjs,我正在开发一个angularjs应用程序。我还是个新手,正在努力理解它 我已经组装了一个基本的应用程序,但我似乎无法让它正常运行。我的控制器代码如下: var unarcoQS = angular.module('unarcoQS',['ngResource', 'ngCart', 'ngRoute', 'angular.filter']); unarcoQS.factory('productService', function ($resource) { return $reso
var unarcoQS = angular.module('unarcoQS',['ngResource', 'ngCart', 'ngRoute', 'angular.filter']);
unarcoQS.factory('productService', function ($resource) {
return $resource('http://example.com/api/service', {});
});
unarcoQS.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider){
$routeProvider
.when('/',{
templateUrl:'template/home.html',
controller: "homeCtrl"
})
.when('/category',{
// templateUrl:'template/category.html', <-- DOES NOT WORK
template: 'Heres Johnny', <-- WORKS
controller: "catCtrl"
})
.when('/products/:PartNumber', {
templateUrl: 'template/product.html'
})
.otherwise({redirectTo:'/'});
$locationProvider.html5Mode(true);
}]);
// Controllers
unarcoQS.controller ('homeCtrl', ['$scope', 'productService', 'ngCart', '$filter', function($scope, productService, ngCart) {
console.log('Home');
}]); //end homeCtrl
unarcoQS.controller ('catCtrl', ['$scope', 'productService', 'ngCart', '$filter', function($scope, productService, ngCart) {
ngCart.setTaxRate(7.5);
ngCart.setShipping(2.99);
var queryParams = {};
productService.query(queryParams, {}, function (response) {
$scope.products = response;
});
$scope.filtering = function(filter){
$scope.catFilter = filter;
// console.log(filter);
};
}]); //end catCtrl
var unarcoQS=angular.module('unarcoQS',['ngResource','ngCart','ngRoute','angular.filter']);
unarcoQS.factory('productService',函数($resource){
返回$resource('http://example.com/api/service', {});
});
unarcoQS.config(['$routeProvider','$locationProvider',
函数($routeProvider,$locationProvider){
$routeProvider
。当(“/”{
templateUrl:'template/home.html',
控制器:“homeCtrl”
})
。当(“/类别”{
//templateUrl:'template/category.html',
主页
当我转到http://myapp.com/
我看到了正确的模板(home.html)。当我导航到http://myapp.com/category
如果我使用templateUrl
,我最终会得到一个404
如果我使用一个字符串和模板
,它最终会显示出来
我知道我错过了一些简单的东西,但我就是不明白
感谢所有帮助!!根据聊天中的讨论,我将我们的调查和解决方案总结如下: 第一个问题-客户端路由的HTML5模式: 服务器端:使用此模式需要在服务器端重写URL, 基本上,你必须重写你所有的链接到你的网站的入口点 应用程序(例如index.html)。还需要一个标记 对于这种情况很重要,因为它允许AngularJS进行区分 在作为应用程序基础的url部分和路径之间 这应该由应用程序来处理。 - 接下来,在禁用HTML5模式后,我们必须更改类别的锚href值,以便在路由之前使用哈希 第二个问题-模板中的嵌套ng视图: 我们遇到的下一个问题是在类别模板中使用嵌套的
ng view
指令,这导致浏览器中出现堆栈溢出错误,因为整个应用程序中只有一个该指令类型。删除该指令后,我们成功运行了您的应用程序
仅供参考,如果需要多个视图,可以使用
要使用AngularJS HTML5模式,您需要查看服务器端URL重写的更改。您的索引或主html文件的头部分是否有
?路由器使用它来确定位置。我有。很抱歉,我忘了发布。当它说404时,请求的位置是什么?我的链接如下所示:/#%2F类别%2
但在我的nav文件中,我有/#/category/
另一件我应该注意的事情是homeCtrl
中的console.log记录了两次
<!DOCTYPE html>
<!--[if lt IE 7]>
<html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>
<html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>
<html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js"> <!--<![endif]-->
<head>
<meta charset="UTF-8">
<title>Home page</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<base href="/quick-ship/">
<!-- Styles -->
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<!-- Scripts -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-resource/1.6.1/angular-resource.min.js"></script>
<script src="node_modules/ngCart/dist/ngCart.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular-route.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.8/angular-filter.min.js"></script>
<!-- <script src="js/pagination.js"></script> -->
<script src="js/controller.js"></script>
</head>
<body ng-app="unarcoQS">
<div ng-include="'includes/header.html'"></div>
<div ng-view></div>
<footer class="fluid-container" ng-include="'includes/footer.html'"></footer>
</body>
</html>