2015-02-09 1 views
1

Я работаю над своим первым приложением Ember. Это вариант приложения. Вы вводите значение, нажмите кнопку отправки и страница должна обновляться с каждым новым добавленным добавлением с использованием двусторонней привязки данных.Обновить страницу с элементами, добавленными в текстовое поле в Ember

Каждый новый элемент добавляется к массиву литералов объектов.

Таким образом, добавление новых объектов в массив, а затем цикл через каждый элемент и печать его на странице работает нормально. Только проблема заключается в том, что страница никогда не обновляется новыми элементами, добавленными через поле ввода.

Я думал о создании пользовательского представления (App.ReRenderUserList в этом случае) и добавлении .observes, как они говорят о in a previous question, может быть ответом, но это, похоже, не работает.

Вот мой код. Дайте мне знать, если что-то еще мне нужно добавить. Спасибо за вашу помощь.

index.html

<script type="text/x-handlebars" data-template-name="add"> 
     {{partial "_masthead"}} 

     <section> 
      <div class="row"> 
       <div class="column small-12 medium-9 medium-centered"> 
        <form {{action "addToList" on="submit"}}> 
         <div class="row"> 
          <div class="column small-8 medium-9 no-padding-right"> 
           {{input type="text" value=itemName}} 
          </div> 
          <div class="column small-4 medium-3 no-padding-left"> 
           {{input type="submit" value="Add +"}} 
           {{!-- clicking on this should add it to the page and let you keep writing --}} 
          </div> 
         </div> 
         <!-- /.row --> 
        </form> 
       </div> 
       <!-- /.column --> 
      </div> 
      <!-- /.row --> 
     </section> 

     <section> 
      <div class="row"> 
       <div class="column small-12 medium-9 medium-centered"> 
        <div class="list"> 
          {{#each userItems}} 
           <div class="column small-16"> 
            {{#view App.ReRenderUserList}} 
             <div class="item">{{name}}</div> 
            {{/view}} 
           </div> 
           <!-- /.column --> 
          {{/each}} 
         </div> 
         <!-- /.list --> 
       </div> 
       <!-- /.column --> 
      </div> 
      <!-- /.row --> 
     </section> 
</script> 
<!-- END add items template --> 

уместна app.js код:

var itemLibrary = [ 
    { 
     'name' : 'bread' 
    }, 
    { 
     'name' : 'milk' 
    }, 
    { 
     'name' : 'eggs' 
    }, 
    { 
     'name' : 'cereal' 
    } 
]; 

var userLibrary = []; 

App.AddRoute = Ember.Route.extend({ 
    model: function() { 
     return Ember.RSVP.hash({ 
      presetItems: itemLibrary, 
      userItems: userLibrary 
     }); 
    } 
}); 

App.AddController = Ember.ObjectController.extend({ 
    actions: { 
     // add the clicked item to userLibrary JSON object 
     addToList: function(){ 
      var value = this.get('itemName'); // gets text input value 
      userLibrary.push({ 
       name: value // this is just echoing and not adding my new items from the form. 
      }); // adds it to JSON Object 
      console.log(userLibrary); 
     } 
    } 
}); 

App.ReRenderUserList = Ember.View.extend({ 
    submit: function(){ 
     console.log('rerendered!'); 
    } 
}); 
+0

в вас addToList методы, пожалуйста, попробуйте вместо 'this.get ('userLibrary') pushObject ({имя: значение}).' И дайте мне знать, что изменилось – Charlie

+0

Кроме того, с вопросы ember, может быть, стоит потратить время на создание jsbin с настройкой ember в нем и ваш код, а затем дать нам ссылку на bin, таким образом мы должны сделать меньше работы, чтобы помочь вам ... :) – Charlie

+0

достаточно справедливо. Я делаю это прямо сейчас. – heyjohnmurray

ответ

2

Вы должны использовать метод pushObject вместо метода толчка. Это обновит привязки ..

App.AddController = Ember.ObjectController.extend({ 
    actions: { 
     // add the clicked item to userLibrary JSON object 
     addToList: function(){ 
      var value = this.get('itemName'); // gets text input value 

      userLibrary.pushObject({ 
       name: value // this is just echoing and not adding my new items from the form. 
      }); // adds it to JSON Object 
      console.log(userLibrary); 
     } 
    } 
}); 
Смежные вопросы