我无法在我的网站中路由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
。
答案 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§