【发布时间】:2014-02-17 19:58:21
【问题描述】:
我正在使用 AngularFire 模块使用 Angular 和 Firebase 开发一个简单的待办事项应用程序。
所以我的模型中有一个布尔属性,由模板中的复选框表示,问题是我正在尝试使用来自 AngularFire 的三向数据绑定,使用 $bind 方法来保持所有更改同步( firebase 数据、DOM 和 ng-model),但是当我选中一个复选框时,firebase 数据没有更新。
这是我使用 AngularFire $bind 方法的控制器:
angular.module('singularPracticeApp')
.controller('TodoCtrl', ['$scope', 'TodoService', function ($scope, todoService) {
$scope.todos = todoService;
$scope.todos.$bind($scope, 'todo.done');
$scope.addTodo = function () {
$scope.todos.$add({text: $scope.todoText, done:false});
$scope.todoText = '';
};
$scope.remaining = function () {
var count = -11;
angular.forEach($scope.todos, function(todo){
count += todo.done? 0 : 1;
});
return count;
};
$scope.clear = function (id) {
$scope.todos.$remove(id);
};
}]);
这是模板文件:
<div ng-controller="TodoCtrl">
<h4>Task runner</h4>
<span>{{remaining()}} todos left.</span>
<ul>
<li ng-repeat="(id, todo) in todos">
<input type="checkbox" ng-model="todo.done">
<span ng-if="todo.done" style="color: #ddd;">{{todo.text}}</span>
<span ng-if="todo.done == false">{{todo.text}}</span>
<small ng-if="todo.done"><a href="" ng-click="clear(id)">clear</a></small>
</li>
</ul>
<form ng-submit="addTodo()">
<input type="text" ng-model="todoText" placeholder="New todo item">
<input type="submit" class="btn btn-primary" value="add">
</form>
</div>
我错过了什么吗?真的可以用一个简单的复选框来完成这项工作吗?
提前致谢。
【问题讨论】:
-
您尚未指定待办事项对象,但您已绑定到其属性之一 (todo.done)。如果您只是绑定 $scope.done 或更直接的路径会发生什么?
-
@Kato 没有任何反应。我刚刚用完整的模板代码更新了这个问题。我希望它有所帮助。
-
加藤,你能帮帮我吗? stackoverflow.com/questions/37847600/…
标签: javascript angularjs data-binding firebase angularfire