【发布时间】:2013-10-21 01:20:18
【问题描述】:
我将控制器传递给 emberjs component。控制器有一个名为 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,它会呈现其内容:
{{dateArray}}
当控制器实例 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('content.@each.timeSlots')
});
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
}
});
【问题讨论】:
-
如果你在 dateArray 计算属性中添加一个断点,当你在这一行再次调用 get 时它是否会被命中: var controllerContent = datePicker.get('dateArray');
标签: javascript ember.js ember-router