我正在构建一个不同路由的mixin来处理保存操作。有时保存后我想做额外的事情,所以我想将saveCallback动作发送回路线。
如果定义了某个动作,是否可以询问路线?或者:我可以检索路线的所有功能,所以我可以检查自己是否定义了路线?
代码mixin :
export default Ember.Mixin.create({
actions: {
save: {
var self = this;
this.get('model').save()
.then(function(result) {
//do stuff
//Something like if(self.hasDefined('saveCallBack')) {
self.send('saveCallback')
}
}, function(errorReason) {
//error handling
});
}
}
}
我无法触发发送操作,因为如果未定义操作,则会引发Nothing handled the action 'saveCallback'
错误。
答案 0 :(得分:2)
我现在无法找到问题,但我在Github上读到了一个关于添加canSendAction
(或类似的)功能的问题。现在,只需在mixin上定义相同的动作,并让它冒泡。
export default Ember.Mixin.create({
actions: {
save: function() {
var self = this;
this.get('model').save().then(function() {
self.send('saveCallback');
});
},
saveCallback: function() {
return true;
}
}
});
编辑:我愚蠢。只需返回true
,操作应该在层次结构中冒泡,如果存在则会被另一个操作捕获。