【发布时间】:2014-10-13 19:50:36
【问题描述】:
我的第一条路线(在完成一些教程之后)有 2 个问题。我正在尝试将部分插入到 index.html 页面中的 ng-view 标记中。首先, $routeProvider 有点工作,但唯一能做任何事情的行是 .otherwise() 表达式。其次,从 ng-dropdown 选择更改页面的控制器代码会更改 URL,但不会更改为新的显示页面。我必须手动单击重新加载箭头才能更改显示。
我的路由应用配置代码是:
residenceApp.config(['$translateProvider', '$translatePartialLoaderProvider', '$routeProvider', '$locationProvider',
function ( $translateProvider, $translatePartialLoaderProvider, $routeProvider, $locationProvider ) {
$locationProvider.html5Mode(true);
$routeProvider.when("/index", { templateUrl: "partials/home.html" });
$routeProvider.when("/partials/postApartment4Rent", { templateUrl: "partials/postApartment4Rent.html" });
$routeProvider.otherwise({ templateUrl: "partials/home.html" });
我可以通过 .otherwise() 表达式访问任何我想要的部分页面,但其他部分无效。显示 partials/postApartment4Rent.html 的 URL,但显示没有改变。我必须手动单击重新加载箭头才能获取新页面。
部分页面具有如下锚表达式。没有 .html,我得到 404 文件未找到。这些就像普通的锚一样,没有路由。
<a href = "postApartment4Rent.html">Rent-link</a>
<a href = "index.html">Home</a>
我正在使用 angular-dropdowns,它在单击其按钮时显示一个下拉菜单。用户从下拉列表中选择并创建一个 JSON 对象,其中包含添加到基本 URL 的路径。控制器在下方。
residenceApp.controller('PostButtonController', ['$translate', '$scope', 'changePostDdFactory', '$location',
function ( $translate, $scope, ddSelections, $location ){
//get the dropdown array from a factory & display it - it works
$scope.$watch('ddMenuSelected', function( newVal ) {
if (newVal && newVal.text) {
$scope.newPage = "'/" + newVal.val + "'";
alert('newPage is: ' + $scope.newPage ); //newPage is: '/postApartment4Rent'
$location.path($scope.newPage); //URL changes, but no new page unless Reload
}
}, true);
}]);
我在 HTML 头中有以下 HTML5 基础。
<base href="http://localhost/angular-oPost/app/">
我的 index.html 的 HTML 还包含以下锚点,位于下拉按钮的 div 上方。它的唯一目的是成为 $routeProvider 的登陆点。它不会/不应显示为链接。
<a href="/index"></a>
index.html 的其余部分是一堆包含参数、输入或 ng-dropdowns 按钮的 div。如果有帮助,我会很高兴发布一些,但这似乎很正常。
【问题讨论】:
-
“TypeError: undefined is not a function”问题是由 $watch 函数中的 $location 引起的。 $location 是从父函数继承的,重复会导致错误。 IMO,错误消息措辞不当,以至于误导。问题 #2 已解决。问题 #1 是
语句、路由和 语句格式之间的一些复杂交互。我现在有时会得到正确的 URL,但部分不会加载,并且与其他 的我得到重复的路径语句。它有些格式混乱。 -
$routeProvider 的 #1 问题具有奇怪的行为。当我单击下拉选择时,URL 会根据上面的控制器发生变化,但显示不会改变。然后,当我单击重新加载/刷新圆形箭头时,我得到了正确的页面显示。在新页面上,当我单击主页锚链接时,它不会路由回 app/index.html 我会转到其他各种现有或不存在的页面,但不会转到
。 -
似乎单击链接会导致尝试转到该确切链接-即 $routeProvider 和 templateURL 不参与该操作。换句话说,似乎没有执行任何路由。为什么会这样?