如何重新加载页面(angularJs)

时间:2015-10-13 18:22:33

标签: javascript html angularjs asp.net-mvc

我们使用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

2 个答案:

答案 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();

这对我有用。