AngularJS$http.get函数未第二次执行

AngularJS$http.get函数未第二次执行,angularjs,json,asp.net-mvc-4,Angularjs,Json,Asp.net Mvc 4,我需要使用angularjs创建一个多选下拉列表,其值来自基于不同参数的数据库。当页面第一次加载时,它工作正常。如果第二次访问此页面,则$http.get函数不会执行,并且仍然显示与第一次页面加载相同的数据。 这是我的.js文件: var app = angular.module("myModule", ["angularjs-dropdown-multiselect"]); app.controller("myController", ['$scope','$http', function (

我需要使用angularjs创建一个多选下拉列表,其值来自基于不同参数的数据库。当页面第一次加载时,它工作正常。如果第二次访问此页面,则$http.get函数不会执行,并且仍然显示与第一次页面加载相同的数据。
这是我的.js文件:

var app = angular.module("myModule", ["angularjs-dropdown-multiselect"]);
app.controller("myController", ['$scope','$http', function ($scope,$http) {
    $scope.AllDescriptions = [];
    $scope.DescriptionsSelected = [];

    $scope.dropdownSetting = {
        scrollable: true,
        scrollableHeight: '200px'
    };

        $http.get('/Areaname/ControllerName/MethodName').then(function (data) {         
            angular.forEach(data.data, function (value, index) {
                $scope.AllDescriptions.push({ id: value, label: value });
            });
        });
}])
这是我的html文件:

<div ng-app="myModule" ng-controller="myController" >
    <div class="container">
        <div id="divRight" style="min-height:5px;display: inline-block; width: 40%; vertical-align: top;">
            <label style="float:left;">Error Description : </label>
            <div style="float:left;width:200px;margin-left:10px" ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="AllDescriptions" selected-model="DescriptionsSelected" checkboxes="true"></div>
        </div>
    </div>
</div>

错误说明:
这是我的.cs文件:

 public JsonResult MethodName()
        {
            List<string> errorDescriptions = //Get from server
            return new JsonResult() { Data=errorDescriptions,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
        }
publicjsonresult方法名()
{
List errorDescriptions=//从服务器获取
返回新的JsonResult(){Data=errorDescriptions,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}

请帮助我为每个页面请求而不是仅在第一个页面请求中执行此JSON方法。谢谢。

我想问题在于缓存。尝试将get方法放在变量(
$scope.GetDescriptions=function(){$http.get…}
)中,并使用ng init指令 (
)。另外,在推送数组中的元素之前,请尝试清空数组(
$scope.AllDescriptions=[],$scope.AllDescriptions.push(…

尝试添加$route.reload(),这将重新初始化控制器,而不是服务:

    app.controller("myController", ['$scope','$http','$route' function ($scope,$http,$route) {
    $route.reload(); // try pass parameter true to force
    $scope.AllDescriptions = [];
    $scope.DescriptionsSelected = [];

    $scope.dropdownSetting = {
        scrollable: true,
        scrollableHeight: '200px'
    };

        $http.get('/Areaname/ControllerName/MethodName').then(function (data) {         
            angular.forEach(data.data, function (value, index) {
                $scope.AllDescriptions.push({ id: value, label: value });
            });
        });
}])
如果要重置应用程序的整个状态,可以使用$window.location.reload();而不是按如下方式路由:

    app.controller("myController", ['$scope','$http','$route' function ($scope,$http,$route) {
    $window.location.reload(); // try pass parameter true to force
    $scope.AllDescriptions = [];
    $scope.DescriptionsSelected = [];

    $scope.dropdownSetting = {
        scrollable: true,
        scrollableHeight: '200px'
    };

        $http.get('/Areaname/ControllerName/MethodName').then(function (data) {         
            angular.forEach(data.data, function (value, index) {
                $scope.AllDescriptions.push({ id: value, label: value });
            });
        });
}])

希望这能起作用。

您说在刷新web(如F5)或在控制器之间导航(使用$state.go)时未调用http.get()我认为问题在于bcoz的缓存。如果视图中没有更改,angular会从缓存加载页面。因此,通过清除缓存进行检查,也可以将缓存设为false。@Javierif:在这两种情况下,值都不会刷新。谢谢you@Ved:你能指导我怎么做吗?我对这个angularJS不熟悉。谢谢you@ManojNayak在stateProvider add cache:False谢谢您的解决方案。但很抱歉,这对我没有帮助。第一个解决方案在内部抛出一些错误,下拉列表中没有填充值。第二个解决方案使页面继续无停止地重新加载。您能在JSFIDLE中举一些例子吗?