【问题标题】:Angularfire $remove function not found找不到Angularfire $删除功能
【发布时间】:2017-01-07 13:02:24
【问题描述】:

也许是一个简单的错误,但我无法检测到。

我有这个脚本在索引中

<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>

我在 app.js 中注入了这个

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

这在 controller.js 中

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);
            };
        })

终于在用户页面有了这个

<div ng-repeat="(id, user) in users">
    CODE
<i class="ion-trash-a" title="Delete" ng-click="removeUser(id)"></i>

当我单击删除功能 console.log 时显示 TypeError: $scope.users.$remove is not a function。 ¿ 有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    您正在尝试从DataSnapshotremove user,这是不可能的。 DataSnapshot 只是数据库的一个副本,用于读取数据。

    据官方Firebase DataSnapshot Documentation

    DataSnapshot 是高效生成的、不可变的数据副本 在数据库位置。它不能被修改,也永远不会改变 (要修改数据,您总是在 Reference 上调用 set() 方法 直接)。

    对于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 是一个child insid users,你正在尝试remove

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

    【讨论】:

      【解决方案2】:

      我使用 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);
                      }
                  });
              }
          })
      

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

      【讨论】:

      • 你看我的方法了吗?这是对您方法的纠正。
      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多