Angularjs ng重复加载数据,但在我单击某个按钮之前不会显示

Angularjs ng重复加载数据,但在我单击某个按钮之前不会显示,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我有一个控制器和一个角度视图。 我正在通过ajax调用一个函数,从服务器获取数据,然后将其加载到数组中,然后用ng repeat绑定它,它加载数据,但在我单击任何按钮之前不会显示。 以下是代码。 视图 你在做一个超越角度的动作。您可能应该考虑实现$http.get(而不是使用看起来像jquery的$.ajax) 如果必须使用$.ajax,则需要告诉angular如何应用$,如下所示: $scope.load = function () { $.ajax({ type: '

我有一个控制器和一个角度视图。 我正在通过ajax调用一个函数,从服务器获取数据,然后将其加载到数组中,然后用ng repeat绑定它,它加载数据,但在我单击任何按钮之前不会显示。 以下是代码。
视图


你在做一个超越角度的动作。您可能应该考虑实现$http.get(而不是使用看起来像jquery的$.ajax)

如果必须使用$.ajax,则需要告诉angular如何应用$,如下所示:

$scope.load = function () {
    $.ajax({
        type: 'GET',
        contentType: 'application/json; charset=utf-8',
        url: '/Home/getList',
        success: function (data) {
            $scope.emplist = data;
            $scope.$apply();
            console.log($scope.emplist);
        }
    });
}
$http.get上的文档:


$apply上的文档:

您应该尝试为ajax使用angular的$http服务。如果这样做,则无需显式执行$scope.load()之类的操作。发生这种情况的原因可能是,仅在用户操作之后才刷新作用域,并且只有在这之后它才具有新的作用域值。但是在$http的情况下,当获取响应并将其存储在$scope中时,作用域会自动刷新

或者,如果您不想将代码更改为$http,则在对$.ajax的成功回调中执行$scope.$apply(),如下所示:

        success: function (data) {
            $scope.emplist = data;
            $scope.$apply();  // or $scope.$digest();
            console.log($scope.emplist);
        }

$http是在这种情况下使用的正确工具,它了解angular的双向数据绑定,并在监视的变量更改后自动消化作用域。以下是控制器的简化版本:

angular.module('MyApp.ctrl.crud', [])
.controller('loginController', ['$scope','$http', function($scope, $http) {
    $scope.emplist = [];
    $http.jsonp('/Home/getList').success(function(data){
        $scope.emplist = data;
    });
});

我看不出你发布的部分代码有什么特别的错误-你点击哪些按钮会触发结果的“显示”?视图中的任何按钮,我点击哪一个都无关紧要
        success: function (data) {
            $scope.emplist = data;
            $scope.$apply();  // or $scope.$digest();
            console.log($scope.emplist);
        }
angular.module('MyApp.ctrl.crud', [])
.controller('loginController', ['$scope','$http', function($scope, $http) {
    $scope.emplist = [];
    $http.jsonp('/Home/getList').success(function(data){
        $scope.emplist = data;
    });
});