2014-05-15 4 views
1

У меня есть следующий код, где я пытаюсь установить модель для ApplicationRoute, но она не работает. У меня есть несколько сомнений относительно кода Ember. Во-первых, могу ли я установить модель для маршрута приложения? Во-вторых, если в модели маршрута есть поля с именем count и fileName, мне нужно также объявить эти поля в контроллере. Похоже, если я это сделаю, значение в контроллере будет иметь приоритет над значением модели. Также я могу сделать что-то вроде this.set('total',5) в setupController, хотя итоговое значение не определено нигде.Модель для маршрута приложения в ember.js

App.ApplicationRoute=Ember.Route.extend({ 
model:function(){ 
    console.log('model called'); 
    return {count:3,fileName:'Doc1'}; 
}, 
setupController:function(){ 
    console.log(this.get('model').fileName); 
    this.set('count',this.get('model.count')); //Do I manually need to do this? 
    this.set('fileName',this.get('model.fileName')); //Do I manually need to do this? 
} 
}); 
App.ApplicationController=Ember.Controller.extend({ 
    count:0,//Is this necessary?? Can I directly set the property with declaring it like this 
    fileName:'' 
}); 

ответ

1

Вы можете сделать:

App.ApplicationController=Ember.Controller.extend({ 
    count: function(){ 
     return this.get('model').get('count'); 
    }.property('model.count') 
}); 

Так в любое время model.count изменений, Собственость будет обновляться автоматически.

И да, вы можете установить модель непосредственно на маршруте. Когда вы делаете this.set('total', 5) в контроллере, вы устанавливаете это свойство только на контроллер, а не на модель. Для того, чтобы обновить модель, вам нужно будет сделать:

var model = this.get('model'); 
model.set('total', 5); 

Наконец, ваш setupController код не является правильным. Вот выборочный метод найден на документы Поста (located here):

App.SongRoute = Ember.Route.extend({ 
    setupController: function(controller, song) { 
    controller.set('model', song); 
    } 
}); 
+0

Так что вы предлагаете, что я должен использовать вычисляемые свойства для всего, Thats в модели? На самом деле, я выяснил, просто ли расширился мой контроллер от ObjectController, а не только Controller, свойства из модели автоматически доступны в контроллере –

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