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