Как получить доступ к обновленному ниже значению $ scope? - PullRequest
0 голосов
/ 01 июня 2018
$scope.widgettype = ' ';
$scope.getwidgettype().then(function (data) {
                    $scope.widgettype = data;
                    $scope.showdimaxis = data === 'bubble';
                });
                console.log($scope.widgettype);

Как новичок в angularjs, я просто застрял здесь.Console.log возвращает пустое значение (не обновленное).

Как получить доступ к значению $ scope.widgettype (обновленное значение) в какой-либо другой функции?Есть ли другой способ добиться этого?

Ваша помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Чтобы использовать widgettype вне вашей текущей функции, вам нужно вернуть Обещание (которое уже $http делает) и разрешить его каждый раз, когда вам нужно получитьзначение.

Например:

$scope.widgettype = ' ';
var promise = $scope.getwidgettype().then(function (data) {
    $scope.widgettype = data.data; // `.then` wraps it in an object, so you need `.data`
    $scope.showdimaxis = data.data === 'bubble';
    return data.data; // return the value within a Promise
});

И использовать его в другом месте как:

promise.then(function(data){ // resolving it every time we need `data`
    console.log(data); // we returned `data.data`, so this time `.data` is not needed
})

Для этого лучше всего написать Service / Factory, которая может вернутьэто так:

return this.getwidgettype().then(function(response) { // return a promise
    return response.data; // and return your data
});
0 голосов
/ 01 июня 2018

Код на angularjs асинхронный.Так что

$scope.getwidgettype().then(function (data) {
                $scope.widgettype = data;
                $scope.showdimaxis = data === 'bubble';
            });

требуется несколько миллисекунд для выполнения.Попробуйте сместить console.log внутри предложения then.

$scope.widgettype = ' ';
$scope.getwidgettype().then(function (data) {
     $scope.widgettype = data;
     $scope.showdimaxis = data === 'bubble';
     console.log($scope.widgettype);
});
...