angularjs repeat第一次不显示数据

时间:2016-03-01 08:59:52

标签: asp.net angularjs angularjs-ng-repeat webmethod

首先,由于我的英语,我很抱歉。 我正在显示一张表格,表明它的数据来自服务器,并以角度重复显示。 我对发送ajax请求的表的每一行进行了一次ng-click,并获得了另一个我要在另一个表中显示的列表,直到现在所有的东西都是正确的, 但我有一点问题,我的问题是我必须在我的第一个表格行上点击两次以显示第二个表格数据,第一次所有数据都来自服务器但没有显示在第二个表格中,我的角度代码如下所示。

 angular.module("BI", [])
       .controller("ListTables", function ($scope, $http) {
           $scope.ReportLst = [];
           $scope.myData = {};
           $scope.myData.ReportLst = [];
           $scope.myData.ReportDetail = [];
           $scope.myData.ReportDetail2 = [];
           $scope.selectedReportval = "";
           $scope.Load = function () {
               $http.post('MakeReport.aspx/LoadReportLst', { data: {} })
                    .success(function (data) {
                        $scope.myData.ReportLst = JSON.parse(data.d);
                    })
                    .error(function (data, status) {
                       alert('error');
                   });

           }
           $scope.SelectRepID = function (val) {

               $.ajax({
                   type: "POST",
                   url: "MakeReport.aspx/GetReportDetail",
                   contentType: "application/json; charset=utf-8",
                   data: "{ 'val': '" + val + "'}",
                   dataType: "json",
                   success: function (data) {
                       $scope.myData.ReportDetail = JSON.parse(data.d);
                   },
                   error: function (data, status, jqXHR) {
                       alert(data.d);
                   }
               });
               $scope.selectedReportval = val;
           }
       });

1 个答案:

答案 0 :(得分:1)

在您的第二个请求中,您使用的是$.ajax而不是$http,因为这不是Angular函数,digest不会被触发,您的视图也不会已更新,为了解决此问题,您还必须使用$http

$scope.SelectRepID = function (val) {
    $http.post({
        url: "MakeReport.aspx/GetReportDetail",
        contentType: "application/json; charset=utf-8",
        data: "{ 'val': '" + val + "'}",
        dataType: "json"
    }).then(
        function(data) {
            $scope.myData.ReportDetail = JSON.parse(data.d);
        }, function(error) {
            alert(error);
        }
    );
    $scope.selectedReportval = val;
}

更新:另一种方法是在$timeout成功函数中使用$.ajax,这样会触发摘要。

success: function (data) {
    $timeout(function() {
        $scope.myData.ReportDetail = JSON.parse(data.d);
    });
}