2013-01-21 2 views
2

Я разработал небольшое тестовое приложение. Загрузка записей человека работает должным образом. Я могу изменить firstName и lastName. В шаблоне personedit у меня есть действие, которое запускает метод сохранения App.PersonController.Каков правильный способ сохранения измененной записи (EMBER 1.0.0-PRE.4)

Каков наилучший способ сохранить измененную запись (реализация метода сохранения)?

JavaScript:

window.App = Ember.Application.create(); 

DS.RESTAdapter.configure("plurals",{"person" : "people"}) 

App.Store = DS.Store.extend({ 
revision: 11, 
adapter: DS.RESTAdapter.create({namespace: 'restservice'}) 
}); 

var attr = DS.attr; 

App.Person = DS.Model.extend({ 
firstName: attr('string'), 
lastName: attr('string'), 
birthDay: attr('string') 
}); 



App.Router.map(function(){ 

    this.resource('people',function(){ 
     this.resource('person',{path: 'people/:person_id'}); 
     this.route('edit'); 
    }); 

}); 


App.PersonRoute = Ember.Route.extend({ 

model: function(params){ 
    console.log('PersonRoute: set Model ==> perform App.Person.find(params.person_id)') 
    var p = App.Person.find(params.person_id); 
    return p; 
}, 
    renderTemplate: function(){ 
    this.render('person'); 
    this.render('personedit',{outlet: 'personedit'}); 
    } 


    }); 

App.PersonController = Ember.Controller.extend({ 
    save: function(){ 
    console.log('save: Person:',this.content); 

} 
}); 

App.PeopleEditRoute = Ember.Route.extend({ 

    model: function(params){ 
    console.log('EditpersonRoute: set Model ==> perform App.Person.find(params.person_id)') 
    var p = App.Person.find(params.person_id); 
    return p; 
} 

}); 

Шаблоны:

<script type="text/x-handlebars" data-template-name="application"> 
    <nav> 
     <div class="navbar"> 
      <div class="navbar-inner"> 

       <ul class="nav"> 
        <li>{{#linkTo "people"}}Personen anzeigen{{/linkTo}}</li> 
        <li>{{#linkTo "page1"}}Page 1 anzeige{{/linkTo}}</li> 
        <li>{{#linkTo "page2"}}Page 2 anzeige{{/linkTo}}</li> 
       </ul> 
      </div> 
     </div> 
    </nav> 

    <div id="main-content"> 
     {{outlet}} 
    </div> 

</script> 


<script type="text/x-handlebars" data-template-name="people"> 
    <div id="people"> 
     <H3>Personen Liste</H3> 
     <ul> 
      {{#each person in controller}} 
       <li> 
        {{#linkTo "person" person}} {{person.firstName}} {{person.lastName}}  {{/linkTo}} 

       </li> 
      {{/each}} 

     </ul> 

    </div> 
    <div class="row-fluid"> 
     <div class="span6"> 
      {{outlet}} 
     </div> 
     <div class="span6"> 
      {{outlet personedit}} 
     </div> 
    </div> 
</script> 


<script type="text/x-handlebars" data-template-name="person"> 
    <div id="person" class="inline"> 
     <H3>Person View</H3> 

     <dl> 
      <dt>Vorname</dt> 
      <dd>{{content.firstName}}</dd> 
      <dt>Nachname</dt> 
      <dd>{{content.lastName}}</dd> 
     </dl> 
     </div> 
    </div> 
</script> 

<script type="text/x-handlebars" data-template-name="personedit"> 
    <H3>EDITOR</H3> 
    <fieldset> 
     <legend>Person</legend> 
     <label>Vorname</label> 
     {{view Ember.TextField valueBinding="content.firstName"}} 
     <span class="help-block">Example block-level help text here.</span> 
     <label>Nachname</label> 
     {{view Ember.TextField valueBinding="content.lastName"}} 
     <button {{action "save" }} class="btn">Save</button> 
    </fieldset> 

</script> 

ответ

0

я нашел правильный путь спасения в другой ответ. Для реализации моего метода сохранения требуется только одна дополнительная линия:

App.PersonController = Ember.Controller.extend({ 
    save: function(){ 
     console.log('save: Person:',this.content); 
     this.content.get('transaction').commit(); 
}