我从视图发送动作到当前路由控制器,然后发送到另一个控制器,以便编写一次代码。
this.get('controller.controllers.study/study').send('processPersonData', data);
* * DEPRECATION:直接在控制器上实现的操作处理程序已弃用,以支持actions
对象上的操作处理程序(操作:processPersonData
on)
在Ember.ControllerMixin.Ember.Mixin.create.deprecatedSend
实施此发送操作的正确方法是什么? 仅供参考:发送动作正常。
答案 0 :(得分:1)
此消息表明处理操作的方法应该在“操作”下进行。在对象上散列,如下:
App.SomeController = Ember.ObjectController.extend({
someVariable: null,
actions: {
processPersonData: function(context) {
//implementation
},
otherAction: function(context) {
//implementation
}
}
});
这只是行动处理的新语义。
答案 1 :(得分:0)
如果您尝试从视图中调用控制器中的操作,则应使用Em.ViewTargetActionSupport mixin,如下所示:
App.DashboardView = Em.View.extend(
Ember.ViewTargetActionSupport, { // Mixin here
functionToTriggerAction: function() {
var data = this.get('data'); // Or wherever/whatever the data object is
this.triggerAction({
action: 'processPersonData',
actionContext: data,
target: this.get('controller') // Or wherever the action is
});
},
});
App.DashboardController = Em.ObjectController.extend(
// The actions go in a hash, as buuda mentioned
actions:
processPersonData: function(data) {
// The logic you want to do on the data object goes here
},
},
});