2015-07-05 2 views
2

Довольно неожиданно для ember js, и я столкнулся с этой ошибкой.Ember JS Значение, которое #each должно быть завершено, должно быть массивом

Error: Assertion Failed: The value that #each loops over must be an Array. You passed '[Saab,Volvo,BMW]' (wrapped in (generated favorites controller)) 

На моем route/favorites.js

export default Ember.Route.extend({ 
    model: function() { 
    // the model is an Array of all of the posts 
    // fetched from this url 

     var cars = ["Saab", "Volvo", "BMW"]; 
    return cars; 
    } 
}); 

Это единственная линия от моего маршрута/favorite.js

и на мое приложение/router.js

import Ember from 'ember'; 
import config from './config/environment'; 

var Router = Ember.Router.extend({ 
    location: config.locationType 
}); 

Router.map(function() { 
    this.route('favorites'); 
}); 

export default Router; 

и моих любимых .hbs

<h1>{{appName}}</h1> 

<ul> 
{{#each controller as |item|}} 
    <li>{{item}}</li> 
{{/each}} 
</ul> 

Что мне не хватает?

ответ

4

Попробуйте

{{#each model as |item|}} 
    <li>{{item}}</li> 
{{/each}} 

Справочная информация: Ember.ArrayController осуждается в текущей версии emberjs. Код, который вы использовали, будет работать, если вы определили Ember.ArrayController, но теперь это обескуражено. Вместо этого я предполагаю, что Ember.Controller создан для вас автоматически, так как вы его не показали. Следовательно, вы должны использовать свойство model на контроллере и обходить его.

+0

Спасибо! Я следовал руководству в документации, похоже, что они не упомянули об этом. другие ресурсы для обучения ember? – user962206

+0

@ user962206 все же руководство не обновляется. Основная команда сейчас организует группу документации для ember 2.0. – jax

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