我是否可以收到$$更新返回的内容或者已更新$$运行一个函数,我可以在每次检查任务时收到该函数?
在一天结束时,我需要计算用户完成的任务数量.似乎firebase有自动同步数据的方法,但目前还不清楚具体如何做到这一点.当任务完成时,我遇到了$ watch和running函数的问题.这看起来像一个有趣的方式,但我不能把这些碎片放在一起.
以下是代码的plnkr:http://plnkr.co/edit/iAGvPHFWn2GSPGzBRpKh?p = preview
// Code goes here
angular.module('app', ['firebase']);
angular
.module('app')
.controller('main', function($scope, $firebase, $timeout, $window, ListWithTotal) {
var ref = new Firebase("https://plnkr.firebaseio.com");
$scope.listWithTotal = ListWithTotal(ref);
$scope.addTask = function(task) {
$scope.listWithTotal.$add({
title: task.title,
complete: false,
tally: 0
});
task.title = '';
};
$scope.completeTask = function(task) {
if (task.complete === true) {
task.complete = true;
task.tally = 1;
} else {
task.complete = false;
task.tally = 0;
}
$scope.listWithTotal.$save(task);
};
$scope.tallyCount = '';
//it would be …Run Code Online (Sandbox Code Playgroud) 我遇到了一个奇怪的错误,但也许我正在使用md-select错误.我正在尝试转到新页面或根据ng-selected选项退出.不幸的是,我收到此错误:
Error: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
Run Code Online (Sandbox Code Playgroud)
HTML:
<md-select placeholder="DISRUPTIVE" ng-model="activePage" ng-change="changeSelected()">
<md-option value="settings">Settings</md-option>
<md-option value="logout">Sign Out</md-option>
</md-select>
Run Code Online (Sandbox Code Playgroud)
控制器:
$scope.changeSelected = function(){
switch ($scope.activePage) {
case "settings":
$location.path( '/account');
break;
case "logout":
$scope.logout();
break;
}
};
Run Code Online (Sandbox Code Playgroud)
导航到所选页面或注销后,我收到错误.md-select可以不用这种方式吗?
编辑:这与离开页面而不让md-select完成有关.如果我添加$ timeout,它会起作用.这不是理想的,但至少我可以继续前进:
$scope.changeSelected = function(){
$timeout(function() {
switch ($scope.activePage) {
case "settings":
$location.path( '/account');
break;
case "logout":
Auth.logout();
break;
}
}, 1000);
Run Code Online (Sandbox Code Playgroud) 我在Stack Overflow上发布了一个相关问题,@ Kato帮我解答了.我试图实现他的答案,但得到一个错误的不能设置未定义的"东西"的属性.
我做了一个尽可能详细的plnkr:http://plnkr.co/edit/M4zEjpZ4kqTKn1sHHMt6
//controller
angular.module('app').controller('DemoCtrl', function($scope, DatedList) {
$scope.world = 'world';
var listRef = new Firebase("https://talllly.firebaseio.com/");
$scope.weeks = DatedList(listRef);
$scope.addTask = function(){
listRef.push({
text: $scope.task.text,
week: 40,
day: 2
});
};
});
angular.module('app').service('DatedList', function($timeout) {
return function(pathToList) {
var list = {};
pathToList.on('child_added', function(snap) {
$timeout(function() { // force Angular to run $digest when changes occur
var data = snap.val();
console.log(data);
var week_number = data.week;
var week_day = data.day;
list[week_number][week_day] = data;
});
});
//todo: …Run Code Online (Sandbox Code Playgroud)