Я передаю контроллер в компонент emberjs. Контроллер имеет вычисляемое свойство с именем dateArray, которое содержит массив дат. Нажав на #linkTo, указывающую на шаблон встречи, я могу перейти в консоль и выполнить:
b = App.__container__.lookup("controller:appointment")
c = b.get('dateArray')
and it returns [Array[2]]
Однако, когда я передаю этот контроллер в компонент emberjs с
{{date-picker datePickerController=controller}}
Внутри компонента я могу получить правильный экземпляр контроллера , используя приведенный ниже код.
datePicker = _this.get('datePickerController');
console.log(datePicker), shows the dateArray with its content.
но массив отображается как пустой, когда я исправляю его на основе приведенного выше экземпляра, используя приведенный ниже код.
controllerContent = datePicker.get('dateArray');
Однако, если я добавлю dateArray в выражения handlebars в шаблоне встреч, он отобразит его содержимое:
{{dateArray}}
Так почему же его dateArray пустой внутри компонента emberjs, когда экземпляр контроллера компонент emberjs имеет dateArray
Контроллер:
App.AppointmentController = Ember.ObjectController.extend({
needs: [ 'timeSlot'],
timeSlotController: Ember.computed.alias('controllers.timeSlot'),
dateArray: function(){
_this = this;
fetchDates = [ ];
var aa = _this.get('content');
var yy = aa.get('timeSlots')
yy.then(function(hh){
nn = hh.map(function(item){ return moment.utc(item.get('startTime')).format("YYYY-MM-DD"); });
pp = fetchDates.pushObjects([nn]);
return nn;
});
return fetchDates;
}.property('[email protected]')
});
Компонент emberjs:
App.DatePickerComponent = Ember.Component.extend({
datePickerController: null,
didInsertElement: function() {
this._super();
_this = this;
var datePicker;
datePicker = _this.get('datePickerController');
//console.log(datePicker);
var controllerContent = datePicker.get('dateArray');
//returns nil
alert(controllerContent);
});// closes didInsertElement
}
});