无法访问控制器中的 $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;
    });
}