Я разрабатываю простое приложение todo с Angular и Firebase, используя модуль AngularFire.
Итак, у меня есть логический атрибут в моей модели, представленный флажком в шаблоне, проблема в том, что я пытаюсь использовать трехстороннюю привязку данных из 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);
};
}]);
А вот файл tempalte:
<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>
Я что-то пропустил? Действительно ли это возможно сделать с помощью простого флажка?
Заранее спасибо.