Ich erstelle eine To-Do-Liste App und möchte es so haben, wenn eine Aufgabe für mehr als fünf Sekunden dort ist, wird die Aufgabe console.logged als abgelaufen. Derzeit wird die Aufgabe jedoch zweimal protokolliert.Angular Controller Aufruf Funktion zweimal
Vorlage:
<h2>Active</h2>
<div class = "container">
<div class="tasks">
<ul>
<li ng-repeat= "task in home.tasks" class="task">{{task.task}}{{home.time(task)}}</li>
</ul>
</div>
</div>
Controller:
(function(){
function HomeCtrl(Task, $timeout){
// Tasks
this.tasks = Task.all;
//Adding tasks
this.taskName = null;
this.addTask = Task.addTask;
//Expired
this.time = Task.createdAt;
}
angular
.module('Blocitoff')
.controller('HomeCtrl', ['Task', '$timeout', HomeCtrl]);
})();
Service:
(function(){
angular
.module('Blocitoff')
.factory('Task', ['$firebaseArray', Task])
function Task($firebaseArray){
var ref = firebase.database().ref().child("tasks");
var tasks = $firebaseArray(ref);
return {
all: tasks,
addTask: function(){
tasks.$add({ task: this.taskName, timeCreated: (Date.now())}).then(function(ref) {
var id = ref.key;
console.log("added record with id " + id);
tasks.$indexFor(id); // returns location in the array
});
alert(this.taskName + " has been added to active tasks");
},
createdAt: function(task){
if(Date.now() - task.timeCreated > 5000){
console.log(task.task + " has expired");
};
}
};
}
})();
die Konsolenmeldung ist zweimal gedruckt? –
Sie haben so viele Dinge namens "Aufgabe", die schwer zu sagen ist, worüber Sie sprechen. '{{home.time (task)}}' ist eine Funktion, die während eines Digest-Zyklus mehrfach aufgerufen wird. Ist das der eine? – georgeawg
Ja '{{home.time (Aufgabe)}}' ist die Funktion, die mehrmals aufgerufen wird. Ich möchte nur, dass es einmal aufgerufen wird. Was wäre der richtige Weg, es zu nennen? – Tchbell