找不到Angularfire $ remove函数

时间:2017-01-07 13:02:24

标签: javascript angularjs firebase ionic-framework firebase-realtime-database

可能是一个简单的错误,但我无法检测到它。

我在索引

中有这个脚本
N

我在app.js中注入了这个

<head>
    <script src="lib/ionic/js/ionic.bundle.min.js"></script>
    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
</head>
<body ng-app="angularfirebase">
    <ion-nav-view></ion-nav-view>
    <script src="https://www.gstatic.com/firebasejs/3.6.2/firebase.js"></script>
    <script src="https://cdn.firebase.com/libs/angularfire/2.2.0/angularfire.min.js"></script>
    <script>FIREBASE KEY</script>

这在controller.js

angular.module('angularfirebase', ['ionic', 'angularfirebase.crud', 'firebase'])

最后我在用户页面中有这个

angular.module('angularfirebase.crud', [])
     .controller('usersController', function ($scope) {
            var users = root.ref('/users/');
            //Show All
            users.on("value", function (snapshot) {
                //No real time
                $scope.users = snapshot.val();
            });
            //Remove
            $scope.removeUser = function (id) {
                alert("Remove");
                $scope.users.$remove(id);
            };
        })

当我点击删除功能console.log show <div ng-repeat="(id, user) in users"> CODE <i class="ion-trash-a" title="Delete" ng-click="removeUser(id)"></i> 时。 ¿有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您正试图remove来自user的{​​{1}},这是不可能的。 DataSnapshot只是数据库的副本,用于读取数据。

根据官方Firebase DataSnapshot Documentation

  

DataSnapshot是一种高效生成的,不可变的数据副本   在数据库位置。它无法修改,永远不会改变   (要修改数据,您始终在Reference上调用set()方法   直接地)。

DataSnapshot用户,您需要使用delete代替database reference

试试这个:

dataSnapshot

我假设users.child(id).remove().then(function() {//users is the user database reference console.log("Remove succeeded.") }) .catch(function(error) { console.log("Remove failed: " + error.message) }); id insid child您尝试users

有关remove的更多信息,请阅读Firebase Database Reference#remove Documentation

答案 1 :(得分:0)

我使用Angularfire和此

修复此错误
  $scope.removeUser = function (id) {
            var user = $firebaseObject(users);
            //Want to show item name
            var confirm = $ionicPopup.confirm({
                title: '<div><i class="ion-trash-a max"></i><div><h2>¿Are you sure?</h2></div>',
                subTitle: '<h4>The user <b>' + id + '</b> will be deleted.</h4>',
            });
            confirm.then(function (res) {
                if (res) {
                    user.$remove(id);
                }
            });
        }
    })

无论如何,谢谢你的帮助。