我的Ember CLI项目中有一个Ember Select视图,该视图绑定到在setupController中创建的动态模型(一系列行程)。加载后,选择需要默认为tripId指示的特定值。
在selectionBinding(selectedTrip)中调用的方法应该这样做,但它似乎无法从模型中获取tripArray。
我已经调用了console.debug(this.get(' model'))并且我可以看到tripArray中填充了条目但是console.debug(this.get(' model) .tripArray'))返回undefined。它几乎就像一种幻觉。此时tripId转换为null,并且select视图的起始位置是提示。
只有在加载了所有组件之后,控制器才能访问tripArray。我做错了什么?
控制器:
export default Ember.ObjectController.extend(Ember.Validations.Mixin,{
trips: function(){
return this.get('model.tripArray');
}.property('model.tripArray'),
selectedTrip: function() {
var tempTrips = this.get('trips');
var trip;
console.debug(this.get('model.tripArray'));
if(tempTrips){
for(var i = 0; i < tempTrips.length; i++){
if(tempTrips[i].id === this.get('model.tripId')){
trip = tempTrips[i];
return;
}
}
}
return trip;
}.property('trips')
}
路线:
export default Ember.Route.extend({
beforeModel: function(){
this.controllerFor('application').checkSuperLogin();
},
setupController: function(controller, model){
this._super(controller, model);
controller.set('model', model);
$("#loading-spinner").modal("show");
$.getJSON("http://website.herokuapp.com/trips", function (data) {
console.log(data);
controller.set('model.tripArray', data);
}).done(function(){
$("#loading-spinner").modal("hide");
});
}
});
选择观看次数
{{view Ember.Select
contentBinding="controller.trips"
valueBinding="model.tripId"
optionValuePath="content.id"
optionLabelPath="content.locationName"
prompt="-"
classNames="form-control input-md"
selectionBinding="controller.selectedTrip"
}}