我们使用AngularJs作为前端的MVC应用程序。菜单视图具有以下代码
<ul>
@foreach (var child in parent.Children)
{
<li class="@MenuHelper.SetChildClass(child, ViewBag) childNode">
<a href="@child.NavigateUrl">@child.Text</a>
</li>
}
</ul>
我们的应用程序中还有几个单页表单(因此它们应该只显示一个索引视图)。他们有取消按钮,其代码如下:
$scope.cancel = function () {
// window.console && console.log("Cancel fired");
$scope.form.$setPristine();
$scope.showForm = false; // close the form
//$state.go('home', {}, { reload: "true" });
};
所以,这就是问题所在。从主菜单(或收藏夹菜单)我激活该单页表单。我按下取消按钮。然后我尝试再次激活该菜单(例如,来自收藏夹)。并且 - 没有任何反应。我只看到旋转圈。该表单的控制器代码永远不会触发。
我认为问题在于缓存,重新加载永远不会发生。我的问题是 - 我需要做些什么来确保页面重新加载?我检查了几个线程,但他们没有使用我显示的菜单视图中的代码。我还在其中一个页面的js文件中尝试了以下内容:
app.config(['$stateProvider',function($stateProvider) {
$stateProvider.state('home', {
url: '/',
template: '',
cache: false
}).
state('edit', {
url: '/edit/:id',
cache: false
}).state('new', {
url: '/new',
cache: false
});
}]);
E.g。我添加了cache:false
但它没有效果。我认为我需要在菜单文件中使用某些内容,但我不确定如何修复该行@ child.Text以确保它重新加载。
编辑:来自评论。
我的相关页面控制器包含以下代码:
app.controller('prefsSlsSearchController', ['$scope', '$rootScope', '$timeout', '$state', 'prefsSlsService', 'resourceFactory', function ($scope, $rootScope, $timeout, $state, prefsSlsService, resourceFactory) {
var init = function () {
$scope.isEditLoading = true;
window.console && console.log("Init fired");
$scope.disableAction = false;
$scope.showForm = false;
doSearch();
};
msg永远不会显示scnd time
答案 0 :(得分:1)
使用ui-router
,您可以使用
$state.go($state.$current, null, { reload: true });
或
$state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true });
或
$state.reload();
如果您使用的是$routePovider
,则可以使用$route.reload();
答案 1 :(得分:0)
在您的控制器中,您必须通过$window
。
并在函数内部使用:$window.location.reload();
。
这对我有用。