Javascript 角度重新加载窗口,然后转到新状态 背景
我有一个大型的angular应用程序,其中有许多用于多种项目的表单 我有动作对象的列表 这些操作具有schemaforms 这些动作表单的下拉列表在不同的动作中有所不同。(下拉列表的内容取决于该操作是哪个公司的子公司) 除非我重新加载页面,否则这些下拉列表的内容不会改变 问题: 如何重新加载窗口,然后更改状态 代码 当前问题: 这段代码应该从cookie/本地存储/etc中清除旧的模式,以便下拉列表显示当前操作的下拉列表内容,而不是最后一个操作的下拉列表内容然后带您进入新操作页面 相反,这段代码将用户带到actionWizard页面,然后将他们带回到公司页面 额外上下文 我正在从名为sharedVars的文件中加载下拉列表内容:Javascript 角度重新加载窗口,然后转到新状态 背景,javascript,angularjs,state.go,Javascript,Angularjs,State.go,我有一个大型的angular应用程序,其中有许多用于多种项目的表单 我有动作对象的列表 这些操作具有schemaforms 这些动作表单的下拉列表在不同的动作中有所不同。(下拉列表的内容取决于该操作是哪个公司的子公司) 除非我重新加载页面,否则这些下拉列表的内容不会改变 问题: 如何重新加载窗口,然后更改状态 代码 当前问题: 这段代码应该从cookie/本地存储/etc中清除旧的模式,以便下拉列表显示当前操作的下拉列表内容,而不是最后一个操作的下拉列表内容然后带您进入新操作页面 相反,这段代码
.controller('ActionController', function ($scope, $stateParams, $state, $window, sharedVars, Company, Action) {
我在这里加载它:
$scope.actionSchema = sharedVars.getActionSchema();
$scope.actionSchema.properties.RDAInput.items.properties.input_location.enum = $scope.actionSchema.properties.RDAInput.items.properties.input_location.enum.concat(eachRDSchemaProperty['name'])
然后在这里更改它:
$scope.actionSchema = sharedVars.getActionSchema();
$scope.actionSchema.properties.RDAInput.items.properties.input_location.enum = $scope.actionSchema.properties.RDAInput.items.properties.input_location.enum.concat(eachRDSchemaProperty['name'])
然后我加载表单
这都是我的错
编辑2
整个表单的HTML:
<form sf-schema="actionSchema" sf-form="actionForm" sf-model="actionModel" name="submittableActionForm">
</form>
所以,我没有ngRoute,但我有角度ui路由器
编辑4
我尝试使用$state重新加载,但下拉列表仍然无法有效地重新加载。所以,这里的第一行似乎没有效果
$state.go($state.current, {}, {reload: true});
$state.go('actionWizard', { companyUuid: CUuid, uuid: AUuid });
编辑5
这也不起作用:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
})
$state.go('actionWizard', { companyUuid: CUuid, uuid: AUuid });
编辑6
我在这里提出了一个新的问题,我认为这更接近问题的核心:此答案仅在进入操作页面时使用
$window
重新加载。但是通过使用散列来避免递归
var currentHref = $window.location.href
if (!currentHref.includes("refresh")) {
$window.location.href = $window.location.href + "#refresh"
$window.location.reload(true);
}
下面有更多解释
此代码启用重定向后的完全重新加载。它在进入新页面时运行
首次通过时,url不包含“刷新”,因此$window.location.href
更改为包含“刷新”。但此不会重新加载页面。只有在重新加载页面并清除缓存后的行。但是,重新加载仅在添加哈希后发生
因此,我进行了完全重新加载,没有无限循环,该循环在进入页面时自动发生“$window.location.reload();”将清除当前运行的代码并重新加载浏览器当前加载的所有内容。这将产生一个新的进程。如果您希望擦除应用程序状态并重新加载,我将查看$root.reload();因为这不会完全刷新和中断当前进程。您在哪里加载下拉列表的选项?@KMins请参见上面的编辑下拉列表的html代码是什么样子的?@rlwheeler请查看编辑2(以及先前编辑中的url以了解更多信息)