我正在使用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更具体的属性。
谢谢!
答案 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)
}