我正在开发一个AngularJS + OnsenUI项目,我遇到导航问题。
我们说我有一个模块:
angular
.module('app.home', ['ui.utils','ngRoute','ngAnimate'])
.controller('HomeCtrl', HomeCtrl)
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'path/to/home/template',
controller: 'HomeCtrl'
})
.when('/test1', {
templateUrl: 'path/to/template',
controller: 'TestOneCtrl'
})
.when('/test2', {
templateUrl: 'path/to/template',
controller: 'TestTwoCtrl'
})
.otherwise({
redirectTo: 'path/to/home/template'
});
});
在HomeCtrl中,我应该(根据某些功能的结果)导航到test1.html或test2.html。我的问题是我不知道如何将routeProvider链接到ons.navigator.pushPage函数。
这不起作用:
var url = '/test1';
$scope.navigator.pushPage( url, { animation : 'slide' } );
这有效:
var url = '/absolute/path/to/template';
$scope.navigator.pushPage( url, { animation : 'slide' } );
我的问题是我需要做什么,所以我不必在url变量中写出模板的绝对路径?显然我错过了一些东西,但我无法弄清楚是什么。
提前致谢!
答案 0 :(得分:0)
我认为这是因为 $ routeProvider 中使用的路径与 pageUrl 中使用的路径的类型不同EM> navigator.pushPage()
$routeProvider.when(path, route);
和
navigator.pushPage(pageUrl, option);
路径类似于浏览器地址栏中找到的应用网址的模式或字符串。例如, "http://localhost:8000/app/index.html#/test1"
。您可以在 routeProvider 中将此作为" / test1" 引用。但是,在 navigator.pushPage()中,您需要为页面指定确切的URL,就像在 $ routeProvider templateUrl 一样>。换句话说, pageUrl = route 。
这只是我的理解。