我正在创建一个待办事项列表应用程序,并希望拥有它,因此当任务在那里超过五秒时,任务会将console.logged作为已过期。但目前该任务已被记录两次。
模板:
<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>
控制器:
(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]);
})();
服务:
(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");
};
}
};
}
})();
答案 0 :(得分:0)
{{home.time(task)}}
将观察者绑定到该函数,并在摘要周期中执行多次。
来自文档:
$watch(watchExpression, listener, [objectEquality]);
只要
listener
更改,就会注册watchExpression
回调。
- 每次调用$digest()时都会调用
watchExpression
,并应返回将要观看的值。 (watchExpression在使用相同输入执行多次时不应更改其值,因为它可能会被$digest()多次执行。也就是说,watchExpression应为idempotent。)