У меня есть две модели (роль, разрешение) со многими отношениями ко многим. Существует список разрешений, и некоторые из них могут иметь роль. Я хочу создать страницу редактирования для Ролей и добавить туда Разрешения в виде списка флажков.Как использовать флажки в отношениях «многие ко многим»?
редактировать шаблон:
<form>
{{input type="text" placeholder="role name" value=name}}
<br />
{{#each permissions_list}}
<label>
{{input type="checkbox" name="permissions[]"}}{{name}}
</label><br />
{{/each}}
<button {{action 'save'}}>Edit</button>
</form>
модели:
var Role = DS.Model.extend({
agents: DS.hasMany('agent', {async: false}),
name: DS.attr('string'),
permissions: DS.hasMany('permission', {async: true})
});
var Permission = DS.Model.extend({
type: DS.attr('string'),
name: DS.attr('string'),
roles: DS.hasMany('permission', {async: false})
});
контроллер редактировать роль
export default Ember.ObjectController.extend({
permissions_list: [],
actions: {
save: function() {
return this.get('model').save();
}
},
load_permissions: function() {
this.set('permissions_list', this.store.find('permission'));
}.on('init')
});
Среди проблем:
- Я не могу определить, как отмечать флажок, если этот флажок установлен, если эти разрешения уже находятся в model.permissions
- Я не могу сохранить разрешения на сохранение роли. Контроллер не видит «разрешения» данные (this.get («разрешение») в контроллере редактировать роль)
разрешений - список разрешений, что роль содержит
permissions_list - список всех разрешений на базе
спасибо. он работает, но есть и другая проблема. Если роль изменена, значения флажков не изменяются. например: role/1 с разрешением [1,2] и роль/2 с разрешениями [3,4]. если я открываю роль/1 и переключаюсь на роль/2, разрешения [1,2] все еще проверяются. если я открываю роль/2, разрешения [3,4] проверяются – dex07
неважно. Я понял. просто изменилось .property() на .property ('role.permissions') – dex07