Как установить параметры выбора, используя базу данных Firebase и ng-repeat

0

База данных (.JSON):

{
  "permissionLevels" : {
    "Admin" : {
      "Comment Access" : "value",
      "Page Access" : "value",
      "Post Access" : "value"
    },
    "Default" : {
      "Comment Access" : "value",
      "Page Access" : "value",
      "Post Access" : "value"
    },
    "Template" : {
      "Comment Access" : "value",
      "Page Access" : "value",
      "Post Access" : "value"
    }
  },
  "users" : {
    "User 1" : {
      "Email" : "[email protected]",
      "Name" : "User 1",
      "PhotoURL" : "https://lh5.googleusercontent.com/-m1_AWD2hhp0/AAAAAAAAAAI/AAAAAAAAAZY/IhIwoLVwl6U/s96-c/photo.jpg",
      "Role" : "Default",
      "uid" : "1235"
    },
    "User 2" : {
      "Email" : "[email protected]",
      "Name" : "User 2",
      "Role" : "Default",
      "uid" : "1236"
    },
    "User 3" : {
      "Email" : "[email protected]",
      "Name" : "User 3",
      "PhotoURL" : "https://lh5.googleusercontent.com/-m1_AWD2hhp0/AAAAAAAAAAI/AAAAAAAAAZY/IhIwoLVwl6U/s96-c/photo.jpg",
      "Role" : "Admin",
      "uid" : "1237"
    }
  }
}

HTML:

<table id="table">
  <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Permission Level</th>
  </tr>
  <tr ng-repeat="(key, value) in users">
    <td>{{value.Name}}</td>
    <td>{{value.Email}}</td>
    <td>
      <select name="{{key}}">
        <option ng-model="key">{{value.Role}}</option>
        <option ng-repeat="(permissionLevel, permissions) in permissionLevels.permissionLevels" ng-if="permissionLevel!=value.Role && permissionLevel!='Template'" ng-selected="string">{{permissionLevel}}</option>
      </select>
    </td>
  </tr>
</table><br/>

Я хочу показать таблицу с каждым именем пользователя, электронной почтой и ролью (уровень разрешений). Роль для каждого человека должна отображаться в <select></select> и пользователь должен иметь возможность изменить его и нажать "ОБНОВИТЬ ВСЕ", чтобы сохранить изменения. Я получил таблицу, чтобы отобразить все правильно, но проблема заключается в получении информации из таблицы и в базе данных. Это то, что я до сих пор на столе

В случае, если вам интересно, я хочу, чтобы он проигнорировал роль "Шаблон", потому что в дальнейшем он будет использоваться в качестве шаблона.

  • 0
    Итак, ваша проблема заключается в попытке сохранить изменения, которые вы вносите в данные, которые вы отображаете в настоящее время? Что ты пробовал до сих пор?
Теги:
firebase
firebase-realtime-database

1 ответ

0
Лучший ответ

$firebaseArray и $firebaseObject имеют трехстороннюю привязку данных. Вид, контроллер и база данных.

var ref = firebase.database().ref("users");
// var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users");
$scope.users = $firebaseArray(ref);

Когда вы нажимаете "Обновить", вам нужно выполнить итерацию и $save все записи, которые меняли роли.

Сначала я бы изменил ваш select:

<select name="{{key}}" ng-options="p.value as p.label for p in permissionLevels" ng-model="value.Role">
</select>

Предполагая, что у вас есть ряд ролей:

$scope.permissionLevels = [
    {
        value: "Default",
        label: "Default",   
    },
    {
        value: "Admin",
        label: "Admin",   
    }
];

Затем при нажатии "Обновить" вы можете вызвать некоторую функцию:

$scope.update = function() {
    for(var i=0; i<$scope.users.length; i++) {
        // Saves all
        $scope.users.$save(i).then(function(ref) {
            // whatever
        })
    }
}

Ссылка: $ firebaseArray $ save

Ещё вопросы

Сообщество Overcoder
Наверх
Меню