我有一个大型的角度应用程序,其中包含许多项目的多种形式。
我有动作对象列表。
这些动作具有模式形式。
这些动作形式的下拉菜单与一个动作与另一个动作不同。 (下拉菜单的内容取决于该操作是哪个公司的子公司)
除非我重新加载页面,否则这些下拉列表的内容不会更改。
如何重新加载窗口然后进行state.go更改?
$scope.goToActionWizardFull = function(CUuid, AUuid) {
$window.location.reload();
$state.go('actionWizard', { companyUuid: CUuid, uuid: AUuid });
}
该代码应该从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'])
然后我加载表单。
中整个表单的HTML:
<form sf-schema="actionSchema" sf-form="actionForm" sf-model="actionModel" name="submittableActionForm">
</form>
我的bower.json看起来像:
{
"name": "isp",
"appPath": "src/main/web",
"moduleName": "ispApp",
"version": "0.0.1",
"dependencies": {
"jquery": "2.1.1",
"angular": "1.6.1",
"json3": "3.3.2",
"angular-ui-router": "0.4.1",
"angular-resource": "1.6.1",
"angular-sanitize": "1.6.1",
"checklist-model": "0.10.0",
"jsog": "1.0.7",
"angular-schema-form": "^0.8.13",
"angular-schema-form-bootstrap": "^0.2.0",
"bootstrap": "3.3.7",
"angular-cookies": "1.6.1"
},
"resolutions": {
"angular": "1.6.9"
},
"install": {
"path": "src/main/web/bower_components"
}
}
所以,我没有ngRoute,但是我有angular-ui-router
我尝试使用$ state重新加载,但是下拉列表仍然无法有效地重新加载。因此,这里的第一行似乎没有任何作用。
$state.go($state.current, {}, {reload: true});
$state.go('actionWizard', { companyUuid: CUuid, uuid: AUuid });
这也不起作用:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
})
$state.go('actionWizard', { companyUuid: CUuid, uuid: AUuid });
我在这里提出了一个新问题,我相信它离问题的核心越来越近:Reload a pages cache, then go to a new page
答案 0 :(得分:0)
此答案仅在进入操作页面时使用$window
来执行reload
。但是避免使用散列进行递归。
var currentHref = $window.location.href
if (!currentHref.includes("refresh")) {
$window.location.href = $window.location.href + "#refresh"
$window.location.reload(true);
}
下面的更多说明
此代码启用重定向后的完全重新加载。在进入新页面时运行。
第一次使用,URL不包含'refresh',因此$window.location.href
更改为包含'refresh'。但是不会重新加载页面。只有重新加载页面并清除缓存后的行。但是,重新加载仅在添加哈希之后发生。
因此,我进行了完全重新加载,没有进入页面后会自动发生的无限循环