Я очень новичок в AngularJs, и у меня есть простой вопрос. Я хочу поставить имя. Но сначала это имя имеет одно значение, но после 0,3-0,5 сек оно имеет другое значение. Я не знаю, как связать его, что значение может измениться.AngularJs асинхронная привязка данных
HTML код:
<div ng-controller="FormController">
<h2 >
{{getName()}}<br>
<span class="icon-f-gear"></span>
<small>Procesas</small>
</h2>
</div>
Угловая контроллер:
var App = angular.module('form', ['ui.bootstrap']);
App.controller('FormController', ['$scope' ,'$http', function($scope, $http) {
$scope.tasks = [];
$scope.socket.stomp.subscribe("/app/tasks", function (message) {
if ($scope.tasks.length !=0){
$scope.tasks.removeAll();
}
JSON.parse(message.body).forEach(function (el) {
$scope.tasks.push(el);
});
});
$scope.getName = function(){
return $scope.tasks[0].form.name;
};
Я использую протокол Stomp, это дает мне данные не сразу, потому что он должен отправить запрос на сервер и получить его обратно , это займет время. Я попытался отлаживать после того, как переменная запроса $ scope.tasks [0] .form.name изменилась с неопределенного на «Учреждение», но на экране неопределенные остается, как связать переменную, чтобы изменить значение динамически. Спасибо за помощь заранее!
ОБНОВЛЕНИЕ Проблема решена, мне просто пришлось использовать функцию $ scope.apply (...). Код здесь:
var App = angular.module('form', ['ui.bootstrap']);
App.controller('FormController', ['$scope' ,'$http', function($scope, $http) {
$scope.tasks = [];
$scope.socket.stomp.subscribe("/app/tasks", function (message) {
if ($scope.tasks.length !=0){
$scope.tasks.removeAll();
}
JSON.parse(message.body).forEach(function (el) {
$scope.tasks.push(el);
});
$scope.apply(function(){$scope.tasks});
});
$scope.getName = function(){
return $scope.tasks[0].form.name;
};
Спасибо за помощь!
Большое спасибо! Я использовал эту функцию $ scope.apply (...), и все работает отлично. Хотя я использовал его только по переменной: $ scope. $ Apply (function() {$ scope.tasks}; – Egizeris