Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以编程方式触发操作?_Javascript_Ember.js - Fatal编程技术网

Javascript 如何以编程方式触发操作?

Javascript 如何以编程方式触发操作?,javascript,ember.js,Javascript,Ember.js,我有这个看法 App.ApplicationView = Em.View.extend({ templateName: 'application', actions: { myAction: function() { // } } }); 假设我想从另一个视图方法(如didInsertElement)手动触发该操作,如: App.ApplicationView = Em.View.extend({ templ

我有这个看法

  App.ApplicationView = Em.View.extend({
    templateName: 'application',

    actions: {
      myAction: function() {
        //
      }
    }
  });
假设我想从另一个视图方法(如didInsertElement)手动触发该操作,如:

  App.ApplicationView = Em.View.extend({
    templateName: 'application',

    actions: {

      sidebarShowHome: function() {
        this.set('sidebarIsHome', true);
        this.set('sidebarIsNotifications', false);
        this.set('sidebarIsArchive', false);
      },
    },

    didInsertElement: function() {
      this.actions.sidebarShowHome();
    }
  });
我怎么做呢?this.actions在视图方法中未定义。

您可以将mixin与以下内容一起使用:

默认情况下,使用不带参数的
this.triggerAction()
将操作发送到控制器,但是如果需要以不同的目标为目标,请定义
target
选项,如示例所示

工作


希望有帮助。

只有在视图使用
Ember.TargetActionSupport
mixin时,
triggerAction()
方法才存在。如果不是这样,请使用
this.get('controller').send('action')

要在同一控制器中调用动作,您可以使用
发送

this.send('nameOfAction', someParams);
this.sendAction('nameOfAction', someParams);

要从组件调用父控制器中的操作,请使用sendAction

this.send('nameOfAction', someParams);
this.sendAction('nameOfAction', someParams);

@直觉像素有没有办法将参数传递给动作?@JonKoops,要真正传递参数,你应该使用可以传递的上下文和控制器:并从中获取你所需的值/参数等。回答很好直觉像素,如果triggerAction调用的操作包含参数,那么如何将参数传递给triggerAction。例如myAction(param),那么当从triggerAction调用此操作时,我们如何传递参数?@Parijat Kalia,附议您的问题!编辑:在这里找到答案:@ParijatKalia我知道;-)谢谢你的提问!triggerAction()完全存在。您阅读的问题不正确,this.get('controller').send('action')将调用控制器中actions对象triggerAction()中声明的操作用于从问题所述的同一视图中触发操作。triggerAction不存在-如果您没有使用Ember。TargetActionSupport mixin
triggerAction
确实存在,但使用它肯定更有意义。