AngularJS Firebase 数据库通过复选框更新字段

标签 angularjs firebase firebase-realtime-database firebase-authentication angular-ngmodel

我想更新显示 Firebase 数据库的表中的数据。

表中的每一行代表一个特定用户的数据。我的目标是能够更新用户数据的一个字段中的数据。在此示例中,我尝试根据复选框 ng-true-value="'admin'" ng-false-value="'user'" 更改用户 Angular 色。 .

如何获取我正在编辑/更新信息的行的用户 ID 并将其传递给更新函数?当前代码正在使用当前用户 ID。

我使用它更新用户信息的功能是:

$scope.updateRole= function () {

            var updated_user_info= {
                role: $scope.user.role

            };
            var myuser = firebase.auth().currentUser;//change this part?!
            DatabaseRef.ref('users/' + myuser.uid).update(updated_user_info)
                .then(function () {
                    console.log("update success");
                }).catch(function (error) {
                $scope.errMsg = true;
                $scope.errorMessage = error.message;
            });
        }

html View :
<tr ng-repeat="obj in $data">   
    <td data-title="'First Name'" filter="{ 'First Name': 'text' }" sortable="'firstName'">{{ obj.firstName }}</td>
    <td data-title="'Last Name'" filter="{ 'Last Name': 'text' }" sortable="'lastName'">{{ obj.lastName }}</td>
    <td data-title="'Role'" filter="{ 'Role': 'text' }" sortable="'role'">
        <input type="checkbox" ng-model="user.role" ng-true-value="'admin'" ng-false-value="'user'" ng-click="updateRole()">
        {{obj.role}}
    </td>
</tr>

目前它只更新当前用户,并为所有用户维护一个检查值,但不更新,只更新当前用户本身。

最佳答案

如果我是你,我会使用 ng-change指令而不是 ng-click . ng-change指令在每次复选框值更改时触发。

HTML

<input type="checkbox" ng-model="user.role" ng-change="updateRole(user)" ng-true-value="'admin'" ng-false-value="'user'">

正如您在上面的 HTML 中看到的,我们可以将用户模型传递给我们的 updateRole 函数并从那里处理其余部分。

JS
$scope.updateRole= function (user) {
   var updated_user_info= {
       role: user.role
   };

  DatabaseRef.ref('users/' + user.uid).update(updated_user_info)
      .then(function () {
          console.log("update success");
      }).catch(function (error) {
      $scope.errMsg = true;
      $scope.errorMessage = error.message;
  });

}

如您所见,您的更新功能发生了一些变化。现在您可以获得 uid来自 user反对并继续。

关于AngularJS Firebase 数据库通过复选框更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498486/

相关文章:

javascript - 如何从 AngularJS 中的一个服务响应调用其他服务?

ios - 从异步调用返回图像

java - 无法将 java.lang.String 类型的值转换为 int?

java - Firebase 回收适配器,带有使用 searchview 的过滤器

timezone - Firebase.ServerValue.TIMESTAMP的时区

java - Firebase 的 ListView 聊天消息

javascript - Textarea ng-bind,其中值有前缀和后缀

angularjs - 动态变量名指令属性

javascript - 将初始 Razor 输出与 Angular 更新相结合

java - 未获取 Firebase 数据库数据