无法在Angularjs中路由非现有路径

时间:2015-07-30 18:28:48

标签: angularjs mobile-angular-ui

我无法在我的网站中路由code/:code路径。我收到以下错误:

  

Firefox无法在/ C找到该文件:/ Code / dola / mobileweb / app / code / 123

default.htm位于app文件夹中。

我正在使用mobileangularui框架。我宣布了以下路线(其中包括):

app.config(function ($routeProvider) {
    $routeProvider.when('/', { templateUrl: 'codeview.htm', reloadOnSearch: false });
    $routeProvider.when('/code/:code', { templateUrl: 'codeview.htm', reloadOnSearch: false });
});

一切正常,除非我尝试例如code/12345

此路线适用于来自外部的来电,例如www.mywebsite.com/code/12345

1 个答案:

答案 0 :(得分:1)

我看到两个问题。首先是不必要地重新声明$ routeProvider。第二个是你没有“否则”条款来捕捉你尚未拥有的一切。 此外,不是错误,而是良好的做法;您缺少控制器和控制器作为每个条目的显式指令。试试这个:

app.config(function ($routeProvider) {
$routeProvider
  .when('/', {
     templateUrl: 'codeview.htm'
     , controller: 'HomeController'
     , controllerAs: 'vm'
     , reloadOnSearch: false
  })
  .otherwise({
     redirectTo: '/'
  })
});

这是基于'/ code /:code'不是它自己的页面的假设。如果不是这种情况,则可以根据上述模型轻松添加/更改选项。

希望这有帮助。

-C§

-edit -

看起来这样做的最佳方式(就像我在当前项目中为此类需求所做的那样)是将代码存储到全局(模型)变量中并使用{{1}调用重定向}。像下面这样的东西将是点击功能的一部分:

$location.path('/');

结果页面将作为其初始化例程的一部分:

DataService.code = vm.code; //the code value selected
$location.path('/');

除了使用PHP捕获带索引的URL扩展和$_GET重定向过程之外,我不熟悉如何指定URL并让它读取它应该基于预告片填充的页面。我知道这可以使用AJAX或Jquery catch来实现,但我仍然对JavaScript作为一个整体有点新,并且不确定该过程会是什么样的。

或者,您可以为每个可能的代码指定一个页面(例如:12345.html || 12345.php)。

希望这也有帮助。

-C§