我正在重新发送这个,因为有人决定“改进”我的措辞,使事情难以理解。如果有人希望提高我的英语水平,我会恳请他/她确保他/她能掌握比我更好的语言。
现在问到原来的问题......
我刚刚使用AngularJS和Bootstrap编写了一个新的WEB项目。开发使用Brackets进行,Brackets是一个编辑工具,可以在作为Web SERVER运行时启动Chrome进行测试。
到目前为止,当Brackets用作SERVER以及整个项目在TOMCAT安装中部署时,一切都按要求工作,只要浏览器使用的是Chrome,机器就是 Windows 10计算机。
现在,我开始使用不同的浏览器和设备(例如平板电脑,手机等)测试项目,并且... OOPS !!!我一直在崩溃。
似乎第一个(也许是中心)问题来自我实施和使用Angular的路由服务的方式(或者,至少,这是我发现的几个帖子的建议)。发生了两件事情(取决于浏览器和触发的动作)指向这个方向:
我多次收到错误infdig
,这意味着某处存在无限重载循环,
当用户成功登录系统时,包含用户详细信息的对象将存储为$rootScope
对象,并且当使用$window.location.href
命令移动到其他页面时,以前存储的所有用户信息都会消失(奇怪的是,Chrome不会发生这种情况,但IE和Edge会发生这种情况!)。
不幸的是,我无法完全理解使用路由服务的正确方法。
项目的结构是:
[MyApp] -- This is the folder containing the whole project under TOMCAT's "webapps" folder
index.html
index.js -- Contails the controller related ot the index.html page
[pages] -- Sub-folder hosting all the pages of the project except for the `index.html`
page1.html
page2.html
:
:
[js] -- Sub-folder hosting the controllers of each and every sub-page
page1.js -- Sub-page controller
page2.js -- Sub-page controller
:
:
使用命令$window.location.href = "#page1.html";
转换到子页面(例如page1.html等),并定义了路由服务:
$routeProvider
:
:
.when('page1.html', {
templateUrl: '#/pages/page1.html',
controller: 'Page1Controller'
}
.when('page2.html', {
templateUrl: '#/pages/page2.html',
controller: 'Page2Controller'
}
:
:
基于与如何定义路由相关的一些帖子,我也尝试过:
.when('page1.html', {
templateUrl: 'pages/page1.html',
controller: 'Page1Controller'
}
和
.when('page1.html', {
templateUrl: '/pages/page1.html',
controller: 'Page1Controller'
}
在两种情况下都会出错(例如找不到网页)。
此外,我不清楚包含声明$locationProvider.html5Mode(true);
的影响是什么(包括此时,我得到了注入错误)。
如果有人能够为我提供有关如何正确使用此Angular路由服务以及是否以及如何设置HTML5模式的简单直接解释,我将非常感激。
非常感谢提前。
答案 0 :(得分:2)
路由参数:
我完成它的方式,它适用于我,它的简单使用我之前展示的相同的路线功能:
然后,如果你看看&search;搜索结果/:searchCriteria' :搜索条件已经是一个参数,我把它放在一个名为sys的javascript变量中(即在我的javascript的乞讨声明变量var sys = null;)。然后在SearchResult控制器上我把sys的值放在$ scope变量中,让我们说$ scope.sys = sys;。如果你想检查开发人员工具控制台中的值和/或玩它们,这会在范围和javascript中为你提供变量
调用pafe http://url/#searchresult/myvalue
就像调用$ location.path之前一样(" / searchresult / myvalue")
像这样你可以创建一个包含许多参数的路径(即" / searchresult / myvalue1 / myvalue2 / myvalue3")并且它们都将存储在变量sys
中让我知道它是否适合你
ps:如果你想改变你的整个网址,请使用window.location.replace(' new url')而不用任何$。此路由与角度之间的区别在于,这将刷新页面,而角度将仅刷新ng-view
ps2:如果您仍然希望示例代码让我知道,如果您决定使用角度RootScoope变量并使其正常工作,请共享代码lol
答案 1 :(得分:1)
关于未找到的网页问题请确保templateUrl:' pages / page2.html'具有与实际文件夹中相同的路径
- capital letters
- the s in "pages" is also present in the pages folder
还要确保权限正常,以免您的应用程序被拒绝访问该文件。不知道你正在使用什么操作系统,但要确保你的应用程序可以访问它
关于循环错误,为了帮助我需要查看更多代码,但是如果您在crhome中打开应用程序并在开发人员工具中看到错误,它可能会给您一个关于应用程序崩溃的位置的提示。 ..其他方法开始评论应用程序的一部分,直到你没有得到错误找到有问题的行然后分析
这是我使用w / o问题的控制器的一个例子