【发布时间】:2015-08-31 15:58:14
【问题描述】:
我刚开始使用 AngularJs 和 Firebase。我正在创建一个待办事项列表应用程序。
在我的应用程序中,我有一个像这样的 html 表单:
<form name="frm" ng-submit="addTodo()" id="form-border">
<div class="form-inline">
<input type="text" class="form-control" name="newtodo" ng-model="newtodo" required="" id="inputform" />
<button class="btn btn-success" ng-disabled="frm.$invalid">Go</button>
<button class="btn btn-danger" ng-click="clearCompleted(todo)">Clear Completed</button>
</div> <!-- end form group -->
</form>
表单下方是 html 无序列表中的实际“待办事项”任务,通过上面的表单添加。
代码示例:
<li ng-repeat="todo in todos" ng-mouseenter="hover = true" ng-mouseleave="hover = false" class="list-group-item" ng-class="inactive" >
<input type="checkbox" ng-model="todo.done" ng-click="clickDone(todo)"/>
<span ng-class="{'done':todo.done}" id="donetask">{{todo.title}}</span><!-- add line-through when task is done-->
<ng-include ng-class="{'hiRank-off': !hover}" src="'rankbutton.html'"></ng-include><!-- ng-include rankbutton-->
</li>
我的 app.js 正在使用 Firebase 存储这些数据:
var myData = new Firebase("https://firebaseio-demo.com/ToDos");
和
$scope.todos.$add({'title':$scope.newtodo,'done':false, 'timetag': datecreated}); //push to Array
$scope.newtodo = '';
我正在标记我的任务已完成 clickDone(todo),它从我的 ng-repeat 中获取变量“todo”。像这样:
$scope.clickDone = function(todo){
$scope.todos.$save(todo); //saves todo state when is checked
};
我的困境是我试图用我的 ng-click="clearCompleted(todo)" 删除一个对象,或者换句话说,它被标记为完成。 可以在第一个代码块中找到 但我认为 clearCompleted() 函数不在 ng-repeat="todo in todos" 范围内,所以我在使用此函数删除对象时遇到了一些麻烦。
我正在尝试删除,但没有成功和错误
TypeError: 无法读取未定义的属性“完成”
$scope.clearCompleted = function($scope.todos){
$scope.todos.$remove($scope.todo.done);
};
【问题讨论】:
标签: javascript angularjs angularjs-scope firebase angularfire