我需要将$http.get
返回的数据存储在我的$scope
控件使用的ui-grid
变量中。
我确定我错过了一些非常简单的东西,但我不知道是什么。这是我的代码:
app.controller('AdminUsersGridCtrl', function ($scope, $http, uiGridConstants) {
$http.get('/api/admin/user')
.success(function (response, $scope) {
$scope.myData = response;
})
.error(function (error) {
console.log(error);
});
console.log($scope.myData);
$scope.gridOptions = {
data: 'myData',
enableFiltering: true,
columnDefs: [
{ field: 'firstName' },
{ field: 'lastName' },
{ field: 'jobTitle'},
{
field: 'email',
filter: {
condition: uiGridConstants.filter.ENDS_WITH,
placeholder: 'ends with'
}
},
{
field: 'phone',
filter: {
condition: function(searchTerm, cellValue) {
var strippedValue = (cellValue + '').replace(/[^\d]/g, '');
return strippedValue.indexOf(searchTerm) >= 0;
}
}
},
]
};
});
我的控制台内部成功打印undefined
。如何访问$scope
功能中的原始$http.get success
?
答案 0 :(得分:1)
My console inside success prints undefined
但是,你的控制台不在success方法中。这是在里面:
$http.get('/api/admin/user')
.success(function (response) {
$scope.myData = response;
console.log($scope.myData);
})
.error(function (error) {
console.log(error);
});
这不是:
// order of events..
// #1...first $http
$http.get('/api/admin/user')
.success(function (response) {
//... #3 third. Now finally response is defined. the end
$scope.myData = response;
})
.error(function (error) {
console.log(error);
});
//... #2 second. $scope.myData definitely IS undefined
console.log($scope.myData);
巨大的差异。您的成功回调中也不需要包含$scope
。我以前从未见过这个。你从哪里得到的?
答案 1 :(得分:0)
如果在外部文件中使用服务,服务器调用何时更好,但在您的情况下,$ scope没有响应,因为代码在服务完成之前执行,请尝试使用$ timeout或类似的东西:
app.controller('AdminUsersGridCtrl', function ($scope, $http, uiGridConstants) {
$http.get('/api/admin/user').success(function (response) {
$scope.myData = response;
fillGridOptions();
}).error(function (error) {
console.log(error);
});
function fillGridOptions() {
$scope.gridOptions = {
data: 'myData',
enableFiltering: true,
columnDefs: [
{ field: 'firstName' },
{ field: 'lastName' },
{ field: 'jobTitle' },
{
field: 'email',
filter: {
condition: uiGridConstants.filter.ENDS_WITH,
placeholder: 'ends with'
}
},
{
field: 'phone',
filter: {
condition: function (searchTerm, cellValue) {
var strippedValue = (cellValue + '').replace(/[^\d]/g, '');
return strippedValue.indexOf(searchTerm) >= 0;
}
}
},
]
};
}
});