2015-05-12 2 views
0

Я использую структуру стручков в ember. Я хочу создать dataservice и выпадающий компонент. какой путь лучше? моя структура основана на ember-cli.как использование модель в emberJS pod структура?

это то, что я делал раньше:

это моя стручки структура: enter image description here

код в раскрывающемся/route.js:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function() { 
    var store = this.store; 
    return $.ajax({ 
     url: 'http://.../api/Category/Categories', //my api url 
     type: 'get' 
     }).then(function(items) {    
     items.forEach(function(item, index, enumerable) { 
      store.push('model',{ 
       id:item.Id, 
       name: item.Title, 
       value: item.Id.toString() 
      }); 
     }); 
     }); 
    } 
    }); 

кода ниспадающей/модели. js:

import Ember from 'ember-data'; 

export default Ember.Model.extend({ 
    name: Ember.attr('string'), 
    value: Ember.attr('string') 
}); 

в моей ниспадающей странице, у меня есть эта ошибка:

Error: No model was found for 'model'

, как я могу решить это?

какой путь лучше? используя способ выше или используя restadapter и serializer? Если второй способ лучше, пожалуйста, помогите мне, как я могу это сделать. спасибо

ответ

1

Ваша структура стручков немного неверна. Структура Pods используется для переноса ресурсов в ваше приложение. Соответственно к ember-cli docs вы должны разделить каталоги в ресурсосбережение образом, где каждый каталог может содержать три файла:

  • controller.js
  • route.js
  • template.hbs

Или в случай компонента:

  • component.js
  • template.hbs

Что я могу предложить вам это:

  • переместить модель в models каталог выше pods (и, возможно, изменить название, так как Model может вызвать странное поведение)
  • отпуск выпадающий компонент, где он находится
  • Я не уверен, но если ваш dataservice является сервисом вместо компонента, переместите его в каталог services, выше pods

Модели следует определять в каталоге models, а не в конструкции стручков. Более того, похоже, что вы используете данные ember-данных (используя store), но вы создаете свои модели, расширяя Ember.Model. Я не уверен, что более правильным подходом было бы расширение DS.Model.

+0

Спасибо за ваш ответ, но моя структура верна, попробуйте создать ресурс в commandlilne, он добавляет каждую модель в папку своего маршрута, то же самое. – mortazavi

0

я изменил мой route.js: store.push('model',...) в store.push('dropdown',...) и она отлично работает.

+0

Очень приятно слышать это, не знал, что он также загружает модели. Благодаря! –

1

Это как ваши стручки папка долженствования в конечном итоге (Components пример):

├── app 
    │ ├── pods 
    │ │ └── components 
    │ │  └── x-foo 
    │ │  │ ├── component.js 
    │ │  │ └── template.hbs 
    │ │  └── x-bar 
    │ │  ├── component.js 
    │ │  └── template.hbs 

(Models пример)

├── app 
    │ ├── pods 
    │ │ └── foo 
    │ │  │ ├── controller.js 
    │ │  │ ├── route.js 
    │ │  │ └── template.hbs 
    │ │ └── bar 
    │ │  │ ├── controller.js 
    │ │  │ ├── route.js 
    │ │  │ └── template.hbs 

Узнайте больше о "стручок" структуры here.

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