私はAngularJSとMEANスタックを使って開発する方法を学習しようとしています。私は非常に初心者の開発者なので、これは知識の問題の欠如かもしれません。getコールに設定した後に変数が未定義のまま残っています
したがって、私は$ getScreen.sprintStart $ rootScope.sprintStart $ rootScope.taskPopAgain $ rootScope.taskPopAgainを事前に設定していますが、get呼び出しで値を格納しようとした後に変数を設定しようとしています。 get呼び出し中にconsole.logを実行すると、値が期待どおりに戻ってくるので、get呼び出し後の次の行は値がなくなったことになります。私はここで間違って何をしていますか?
api/tasksから来る値は、オブジェクトを含む配列であり、api/sprintモデルは1つのオブジェクトを送信する必要があります。
変数をクリーンアップして単純化することができますが、現状の状況を視覚化するのに役立ちます。もう一度、私は初心者です。
助けてくれてありがとう!
'use strict';
angular.module('inBucktApp')
.service('VariableService', function() {
// AngularJS will instantiate a singleton by calling "new" on this function
var ticketId = 'noTicketYet';
var ticketAssigneeName = 'noTicketNameYet';
return {
getPropertyId: function() {
return ticketId;
},
getPropertyName: function() {
return ticketAssigneeName;
}
,
setProperty: function(value, valueName) {
ticketId = value;
ticketAssigneeName = valueName;
}
};
})
.run(['$rootScope', '$http', 'socket', 'VariableService', function($rootScope, $http, socket, VariableService) {
$rootScope.sprintStart;
$rootScope.taskPopAgain;
$http.get('/api/sprints').success(function(sprints) {
$rootScope.sprints = sprints.pop();
$rootScope.sprintStart = new Date($rootScope.sprints.start);
$rootScope.sprintEnd = new Date($rootScope.sprints.end);
console.log($rootScope.sprintStart)
socket.syncUpdates('sprints', $rootScope.sprints);
});
$http.get('/api/tasks').success(function(task) {
$rootScope.task = task;
$rootScope.taskPop = _.flatten($rootScope.task);
$rootScope.taskPopAgain = $rootScope.taskPop.pop();
console.log($rootScope.task);
// console.log($rootScope.taskPop);
console.log($rootScope.taskPopAgain.start);
console.log($rootScope.taskPopAgain);
socket.syncUpdates('task', $rootScope.task);
});
//coming up as undefined now, so function below doesnt work.
console.log($rootScope.taskPopAgain);
console.log($rootScope.sprintStart);
ああ!そのすばらしい説明をありがとう!あなたが言ったように、私は$ httpメソッドの非同期的な側面については全く知りませんでした。 もう一度、ありがとうございます! – azizmars
あなたが角度を持って多くの開発をするつもりなら、約束事と$ qプロバイダーに精通したいでしょう。 '$ http'メソッドは、非同期的な振る舞いを容易にするために約束を使用します。それらは複雑なシナリオの多くで非常に便利です。 –
ありがとうございました。私はもう少し前に約束の話題を抜きにしましたが、私は間違いなくそれについてもう少し研究をします。 – azizmars