从视图发送数据的Ember会导致错误

时间:2014-03-05 13:13:45

标签: javascript ember.js deprecated

我从视图发送动作到当前路由控制器,然后发送到另一个控制器,以便编写一次代码。

  this.get('controller.controllers.study/study').send('processPersonData', data);

* * DEPRECATION:直接在控制器上实现的操作处理程序已弃用,以支持actions对象上的操作处理程序(操作:processPersonData on)         在Ember.ControllerMixin.Ember.Mixin.create.deprecatedSend

实施此发送操作的正确方法是什么? 仅供参考:发送动作正常。

2 个答案:

答案 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
        },
    },
});