Ember에는 컬렉션이 하나이고 다른 하나는 책인 두 개의 모델이 있습니다. 컬렉션 모델에는 "book"및 "book" "belongsTo" "collection"과 "hasMany"관계가 있습니다. 그래서 내가하고 싶은 것은 두 모델을 가지고 동시에 저장할 수있는 형태입니다.Ember js hasmany 관계의 데이터 저장
컬렉션 모델
// collection Model
export default DS.Model.extend({
name: DS.attr('string'),
city: DS.attr('string'),
books: DS.hasMany('book', { async: true })
});
책 모델
//book Model
export default DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('string'),
collection: DS.belongsTo('collection', {async: true})
});
양식
//Collection View
<div class="row">
<div class="col-sm-12">
<div class='panel panel-default'>
<div class='panel-body'>
<form>
<fieldset>
<legend>
Collection
</legend>
<div class="row">
<div class="col-sm-6">
<label for="name" class="col-sm-2">Name</label>
<div class="col-sm-10">
{{input id="name" type="text" class="form-control" value=collection.name}}
</div>
</div>
<div class="col-sm-6">
<label for="city" class="col-sm-2">city</label>
<div class="col-sm-10">
{{input id="city" type="text" class="form-control" value=collection.city}}
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>
books
</legend>
<div class="row">
<div class="col-sm-6">
<label for="title1" class="col-sm-2">title</label>
<div class="col-sm-10">
{{input id="title1" type="text" class="form-control" value=book.title1}}
</div>
</div>
<div class="col-sm-6">
<label for="description1" class="col-sm-2">description</label>
<div class="col-sm-10">
{{input id="description1" type="text" class="form-control" value=book.description1}}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<label for="title2" class="col-sm-2">title</label>
<div class="col-sm-10">
{{input id="title2" type="text" class="form-control" value=book.title2}}
</div>
</div>
<div class="col-sm-6">
<label for="description2" class="col-sm-2">description</label>
<div class="col-sm-10">
{{input id="description2" type="text" class="form-control" value=book.description2}}
</div>
</div>
</div>
</fieldset>
<div class="row">
<div class="col-sm-12">
<button {{action 'addCollection'}} class="btn btn-primary">New Collection</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
컨트롤러 :
actions:{
addCollection: function(){
var name = this.get('collection.name');
var city = this.get('collection.city');
var title1 = this.get('book.title1');
var description1 = this.get('book.description1');
var title2 = this.get('book.title2');
var description2 = this.get('book.description2');
var newCollection = this.store.createRecord('collection', {
name: name,
city: city,
});
},
이 콜렉션에 대해 2 세트의 서적을 얻으려고하지만이 모델에 항목을 저장하는 올바른 절차를 찾는 데 문제가 있습니다. 컬렉션 모델을 먼저 저장 한 다음 개별 책을 컬렉션으로 푸시해야 할 수도 있습니다. 이 올바른지? 나는 그것에 대해 어떻게 갈 것인가?
책이 같은 인스턴스에서 생성 된 경우 어떨까요? 책을 먼저 저장 한 다음 변수로 만들어서 컬렉션으로 푸시 하시겠습니까? 한 번에 여러 권의 책을 저장하면 this.get ("book")이됩니다. – jsg
동시에 둘 모두를 만든 다음 모음을 책으로 설정하거나 책을 모음으로 밀어 넣을 수 있습니다. 문서는 여기에서 찾을 수 있습니다. https://guides.emberjs.com/v2.15.0/models/relationships/#toc_creating-records @jsg – BrandonW
각 책을 개별적으로 저장하는 경우, 먼저 책을 만들어 두 책을 모두 책으로 가져와야합니다. 컬렉션이 저장 될 때 각 책에 컬렉션을 설정할 수도 있습니다. 매번 책을 추가하는 경우 서식 파일을 통해 작업에 도서를 전달하는 것이 더 쉬울 수 있습니다. 동시에 여러 책에 대한 시나리오로 내 대답을 업데이트하겠습니다. – BrandonW