База данных (.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>
и пользователь должен иметь возможность изменить его и нажать "ОБНОВИТЬ ВСЕ", чтобы сохранить изменения. Я получил таблицу, чтобы отобразить все правильно, но проблема заключается в получении информации из таблицы и в базе данных. Это то, что я до сих пор на столе
В случае, если вам интересно, я хочу, чтобы он проигнорировал роль "Шаблон", потому что в дальнейшем он будет использоваться в качестве шаблона.
$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