无法访问控制器中的 $scope 变量
Can't access $scope variable in controller
在我的控制器中,我调用了一个 returns 一个 JSON 对象的工厂:
function getData() {
trainDataFactory.getData()
.success(function (data) {
$scope.dataList = data;
})
.error(function (error) {
$scope.status = 'Unable to load data: ' + error.message;
});
}
然后我可以像这样在视图中访问 $scope.dataList(有效):
{{ dataList[0].UnitNumber }}
但是我想在控制器中访问同一个变量,但是它不起作用 - angular 只是中断。
我在控制器启动时尝试这样做:
init();
function init() {
getData();
console.log($scope.dataList[0].UnitNumber);
$scope.firstDataListItem = $scope.dataList[0].UnitNumber;
}
getData() 被调用所以我不明白为什么 $scope.dataList 不可用??
getData()
中的数据检索将异步执行。它在 getData()
执行完毕后将不可用。
您需要使用 promise:
function getData() {
return trainDataFactory.getData()
.then(function (response) {
return response.data;
})
.catch(function (error) {
throw new Error('Unable to load data: ' + error.message);
});
}
function init() {
getData().then(function (data) {
$scope.dataList = data;
console.log(data[0].UnitNumber);
$scope.firstDataListItem = data[0].UnitNumber;
})
.catch(function (error) {
$scope.status = error.message;
});
}
在我的控制器中,我调用了一个 returns 一个 JSON 对象的工厂:
function getData() {
trainDataFactory.getData()
.success(function (data) {
$scope.dataList = data;
})
.error(function (error) {
$scope.status = 'Unable to load data: ' + error.message;
});
}
然后我可以像这样在视图中访问 $scope.dataList(有效):
{{ dataList[0].UnitNumber }}
但是我想在控制器中访问同一个变量,但是它不起作用 - angular 只是中断。
我在控制器启动时尝试这样做:
init();
function init() {
getData();
console.log($scope.dataList[0].UnitNumber);
$scope.firstDataListItem = $scope.dataList[0].UnitNumber;
}
getData() 被调用所以我不明白为什么 $scope.dataList 不可用??
getData()
中的数据检索将异步执行。它在 getData()
执行完毕后将不可用。
您需要使用 promise:
function getData() {
return trainDataFactory.getData()
.then(function (response) {
return response.data;
})
.catch(function (error) {
throw new Error('Unable to load data: ' + error.message);
});
}
function init() {
getData().then(function (data) {
$scope.dataList = data;
console.log(data[0].UnitNumber);
$scope.firstDataListItem = data[0].UnitNumber;
})
.catch(function (error) {
$scope.status = error.message;
});
}