2014-09-29 3 views
0


Я использую ember-cli, и есть один контроллер, который получает использование помощника рендера и, следовательно, никакого маршрута. Примермодель не получается при использовании помощника рендеринга в ember -cli

{{render 'ref-type' ref-type}} 

Теперь внутри контроллера реф-типа

export default Ember.Controller.extend({ 
    actions{ 
     isShown: function() { 
      var m = this.get('model'); //here model is undefined can i know why? 
     } 
    } 
}); 

и модель реф-типа

export default Ember.Object.extend({ 
    getData: function(){ 
     return 'xyz'; //data is returned hre 
    } 
}); 

почему я не в состоянии получить доступ к модели в контроллере.

Добавление исходного примера JSBin JSBIN Должна ли модель всегда быть DS.Model.extend? я так не думаю.
Кроме того, вместо ref-type я использовал «образец» в качестве имени, так что его легче понять.

+0

Можете ли вы привести полный пример в JSBin? – saygun

+0

его очень сложно, так как я использую ember cli, а не только ember js – wallop

+0

Я думаю, что это не проблема ember-cli. Где вы инициализируете свою модель, на которую ссылается {{render 'ref-type' ref-type}} – saygun

ответ

1

Вы никогда не инициализируете свою модель. Согласно вашему примеру JSBin, у вас должно быть свойство с именем sample в вашем TodosController. ember не создаст объект сам по себе. Я отредактировал ваш JSBin. Возможно, это не лучший подход, но я попытался объяснить, что происходит.

Если вы поместили журнал {{log sample}} чуть выше своего помощника render, вы заметите, что ваше свойство образца уже не определено.

+0

ahhh right Вы уверены, что это так? Вы говорите, что {{render "sample" sample}} подобен {{sample -компонент sampleVal = sample}}, где sample - значение текущего контекста либо из модели, либо из контроллера? Я думал, что образец модели в {{render "sample" sample}} не зависит от контекста. Я думал, что он просто загрузил образец модели, а не взял его из текущего контекста. Кстати, вы в этом уверены? – wallop

+0

Также вы знаете, как я могу инициализировать модель, когда маршрут не задействован, но используется {{render}}? – wallop

+0

Да, ember не может создать модель для {[render "sample" sample}}, вы должны указать эту модель. Я не знаю вашей логики приложения, но из-за моего примера JSBin я предлагаю вам создать эту модель «образца» в hookController для установки TodosRoute. setupController: функция (контроллер, модель) { это._super (контроллер, модель); controller.set ('sample', Todos.sample.create()); } – saygun

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