Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度重新加载窗口,然后转到新状态 背景_Javascript_Angularjs_State.go - Fatal编程技术网

Javascript 角度重新加载窗口,然后转到新状态 背景

Javascript 角度重新加载窗口,然后转到新状态 背景,javascript,angularjs,state.go,Javascript,Angularjs,State.go,我有一个大型的angular应用程序,其中有许多用于多种项目的表单 我有动作对象的列表 这些操作具有schemaforms 这些动作表单的下拉列表在不同的动作中有所不同。(下拉列表的内容取决于该操作是哪个公司的子公司) 除非我重新加载页面,否则这些下拉列表的内容不会改变 问题: 如何重新加载窗口,然后更改状态 代码 当前问题: 这段代码应该从cookie/本地存储/etc中清除旧的模式,以便下拉列表显示当前操作的下拉列表内容,而不是最后一个操作的下拉列表内容然后带您进入新操作页面 相反,这段代码

我有一个大型的angular应用程序,其中有许多用于多种项目的表单

我有动作对象的列表

这些操作具有schemaforms

这些动作表单的下拉列表在不同的动作中有所不同。(下拉列表的内容取决于该操作是哪个公司的子公司)

除非我重新加载页面,否则这些下拉列表的内容不会改变

问题: 如何重新加载窗口,然后更改状态

代码 当前问题: 这段代码应该从cookie/本地存储/etc中清除旧的模式,以便下拉列表显示当前操作的下拉列表内容,而不是最后一个操作的下拉列表内容然后带您进入新操作页面

相反,这段代码将用户带到actionWizard页面,然后将他们带回到公司页面

额外上下文 我正在从名为sharedVars的文件中加载下拉列表内容:

.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以了解更多信息)