EmberJS中的findByAttribute

时间:2013-11-16 17:15:19

标签: ember.js ember-data ember-tools

我正在使用Ember v1.0.0, Ember-Data v1.0.0-beta.3并使用Ember-tools.

进行构建

order_controller内,我有一个名为delivered的动作。一旦触发,我想对当前对象进行一些更改(此处没有问题) - 但我也想从同一个模型中查询对象并对其进行一些更改。

继承我的ObjectController:

var OrderController = Ember.ObjectController.extend({
actions: {
    edit: function(){
        this.transitionToRoute('order.edit');
    },
    delivered: function(){
        // orders are sorted by "sequence" attr.
        var current_sequence = this.get('sequence');

        // find the next order in pipeline
        var next_sequence = current_sequence+=1;

        // HERE is the challenge!
        var next_order = App.Order.find({sequence: next_sequence});

        this.set('up_next', false);

        next_order.set('up_next', true);

        this.transitionToRoute('order', next_order.id)

    }
}

});

module.exports = OrderController;

我正在使用FIXTURES:

Order.FIXTURES = [
    {
        id: 1,
        name: "John Doe",
        email: "john@doe.com",
        telephone: "263663636",
        address: "123 Example Rd.",
            ......
        sequence: 4,
        done: false,
        up_next: false
    },

基本上我正在寻找一种从ObjectController内部查询记录的方法,它具有比ID更具体的属性。

谢谢!

1 个答案:

答案 0 :(得分:1)

    // Find all the records, find returns a promise
    var promise = this.get('store').find('order');

    this.set('up_next', false);

    next_order.set('up_next', true);

    // once the promise is resolved
    promise.then(function(records){

      // filter out the first item to satisfy the method passed into it
      // http://emberjs.com/api/classes/Ember.Array.html#method_find
      var filteredRecord = records.find( function(record){ return record.get('sequence')==sequenceNo;});
      this.transitionToRoute('order', next_order)
    }