2014-10-21 4 views
0

Попытка получить значение щелчка item в контроллере action (предупреждение), но я всегда получаю undefined. Я хотел бы вернуть JSON (несколько записей) из модели и получить доступ к нему в контроллере (без использования FixtureAdapter).Как получить значения модели в контроллере

<script type="text/x-handlebars" data-template-name="first"> 
...   
{{#each item in model}} 
    <p {{action 'myClick'}}>{{item.name}}</p> 
{{/each}} 
... 

App.FirstRoute = Ember.Route.extend({ 
    model: function(){ 
     return [ 
      {name: 'Ruby'}, 
      {name: 'Java'} 
     ] 
     //return [ 'Ruby', 'Java', 'Scala']; 
    } 
}); 

App.FirstController = Ember.Controller.extend({ 
    title:'data from FirstController', 
    actions: { 
     myClick: function() { 
      alert('action in controller -> ' + this.get('model').get('name')); 
     } 
    } 
}); 

ответ

2

Почему бы вам не передать свой товар в качестве параметра для вашего действия?

{{#each item in model}} 
    <p {{aciton 'myClick' item}}> {{item.name}} </p> 
{{/each}} 


App.FirstController = Ember.Controller.extend({ 
    title:'data from FirstController', 
    actions: { 
    myClick: function(item) { 
     alert('action in controller -> ' + item.name); 
    } 
    } 
}); 

Кстати, вы не возвращаете Ember.Object в свой маршрут. Ваша модель представляет собой массив чистого объекта javascript, поэтому вместо item.get('name')item.name

+0

Блестящая идея. Но я получил «Uncaught TypeError: undefined не является функцией» в консоли. – Bala

+0

Не возражаете, если я попрошу вас предоставить пример JSBin, демонстрирующий вашу проблему. Я мог бы исправить это – saygun

+0

http://emberjs.jsbin.com/yimefuzome/1/edit?html,js,output – Bala

Смежные вопросы