Я новичок в Ангуляре. Я пытаюсь использовать компоненты (1.6). В родительском элементе у меня есть $http.get
, который получает данные от службы, а затем присваивает ответ переменной $scope
. Эта переменная области действия передается дочернему компоненту с помощью односторонней привязки <
. В JavaScript, если я предупреждаю переданную переменную, я получаю «неопределенное», однако шаблон html в дочернем элементе показывает переменную. Это похоже на то, что происходит состояние гонки, и я не знаю, как сказать ему подождать, пока данные из службы не будут загружены.
В моем parent.js:
(function (angular) {
'use strict';
$http.get("http://localhost:52422/api/PayOffYourCc")
.then(function mySucces(response) {
$scope.baseline = response.data;
}
,
function myError(respone) {
$scope.baseline = response.statusText;
}
);
})(window.angular);
В моем родительском HTML-шаблоне:
<thermometer baseline="baseline"></thermometer>
В моем дочернем компоненте:
(function (angular) {
'use strict';
function drawChart(baselineVal) {
alert(baselineVal);
}
function ThermometerController($scope) {
var ctrl = this;
ctrl.$onInit = function () {
drawChart(ctrl.baseline);
};
}
angular.module('payOffYourCcApp').component('thermometer', {
templateUrl: '../PayOffYourCC/partials/thermometer.html',
transclude: true,
controller: ThermometerController,
bindings: {
baseline: '<'
}
});
})(window.angular);
В моем дочернем html-шаблоне:
<div>
baseline:{{$ctrl.baseline}}
</div>
В html {{$ctrl.baseline}}
отображается нормально, но когда я предупреждаю об этом в .js, это undefined
. Почему это? Как я могу убедиться, что {{$ctrl.baseline}}
находится в области действия до загрузки javascript?