直到太晚才能在选择绑定中获取属性/模型数组

时间:2014-12-18 03:05:28

标签: ember.js ember-select

我的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"
  }}

0 个答案:

没有答案