【发布时间】:2014-12-06 13:05:27
【问题描述】:
我一直在使用 firebase API,但遇到了一些困难。
问题是我试图在数组中向上或向下移动一个项目,但似乎无法弄清楚如何在 Firebase API 中执行此操作。
这是我的控制器
angular.module('aceTrainingApp')
.controller('AdminController',['$scope','FirebaseService', function ($scope, FirebaseService) {
$scope.posts = FirebaseService.getPosts();
$scope.localPosts = $scope.posts; //is this Right??
$scope.newPost = {name: '', body: ''};
$scope.remove = function (id) {
FirebaseService.removePost(id);
};
$scope.updatePost = function (id) {
FirebaseService.updatePost(id);
$scope.newPost = {name: '', body: ''};
};
$scope.addPost = function() {
FirebaseService.addPost(angular.copy($scope.newPost));
};
//only trying to get moveDown working first
// $scope.moveUp = function(post) {
// var crntPos = $scope.posts.indexOf(post);
// if (crntPos > 0) {
// $scope.posts.splice(crntPos, 1);
// $scope.posts.splice(crntPos - 1, 0, post);
// }
// };
$scope.moveDown = function(post) {
var crntPos = $scope.localPosts.indexOf(post);
if (crntPos < $scope.localPosts.length) {
$scope.localPosts.splice(crntPos, 1);
$scope.localPosts.splice(crntPos + 1, 0, post);
FirebaseService.updateAllPosts($scope.localPosts);
}
};
}]);
这里是服务
angular.module('aceTrainingApp').factory('FirebaseService', [ '$firebase', function($firebase){
var ref = new Firebase('https://acetrainingsolutions.firebaseio.com/');
var posts = $firebase(ref).$asArray();
var getPosts = function(){
return posts;
};
var removePost = function(id){
posts.$remove(id);
};
var updatePost = function(post){
posts.$save(post);
};
var addPost = function(index){
posts.$add(index);
};
return {
getPosts: getPosts,
removePost: removePost,
updatePost: updatePost,
addPost: addPost
};
}]);
HTML
<li ng-repeat="post in localPosts track by $index">
<input type="text" ng-model="post.name" ng-blur="updatePost($index)">
<input type="text" ng-model="post.body" ng-blur="updatePost($index)">
<button type="button" class="close space" ng-click="moveDown(post)">↓</button>
<button type="button" class="close space" ng-click="moveUp(post)">↑</button>
<button type="button" class="close space" ng-click="remove($index)">×</button>
</li>
问题在于 splice 方法仅适用于 Firebase 文档中提到的视图。有人可以帮我修复 moveUp 和 moveDown 功能吗?
干杯
【问题讨论】:
-
多个客户端会同时写入这个数组吗?
-
不,这个功能是在管理页面中实现的
标签: arrays angularjs firebase sync angularfire