我正在构建一个非常简单的演示Angular应用程序,看看它与Backbone的比较,我在路由方面遇到了困难,尽管我已经阅读了routing tutorial。
我希望每当<select>
元素更改为/LHR
或/SFO
时,我的演示应用中的路线都会更新,或者无论选择的新值是什么(并且可能是{没有历史记录API的浏览器中的{1}}等。
我还希望路由器在页面加载时处理初始路径,并设置/#LHR
选项的默认值。
这是我的HTML - 我只有一个模板:
<select>
这是我的JS:
<html ng-app="angularApp">
[...]
<body ng-controller="AppCtrl">
<select ng-model="airport" ng-options="item.value as item.name for item in airportOptions" ng-change='newAirport(airport)'></select>
<p>Current value: {{airport}}</p>
</body></html>
我完全不确定我是否正确设置了路由提供程序,目前它正在给我var angularApp = angular.module('angularApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/:airportID', {templateUrl: 'angular.html', controller: AppCtrl}).
otherwise({redirectTo: '/'});
}]);
angularApp.controller('AppCtrl', function AppCtrl ($scope, $http, $routeParams) {
$scope.airportOptions = [
{ name: 'London Heathrow', value: 'LHR' },
{ name: 'San Francisco International', value: 'SFO' },
{ name: 'Paris Charles de Gaulle', value: 'CDG' }
];
$scope.airport = $scope.airportOptions[0].value; // Or the route if provided
$scope.newAirport = function(newAirport) {
console.log('newAirport', newAirport);
};
});
。我做错了什么?
更新:我通过将AppCtrl放在引号中修复了ReferenceError,感谢评论者。现在我的问题是当我尝试导航到Uncaught ReferenceError: AppCtrl is not defined from angularApp
时$routeParams
为空。如何获取路径参数?
更新2:让路线正常工作 - 虽然感觉有点黑客。我做得对吗?
/#LHR