未从EmberJS中的组件发送操作

时间:2015-11-24 21:26:33

标签: javascript ember.js

当我关闭一个bootstrap模式时,它不会发送应该执行的操作(在应用程序js中:)

application.hbs:

<li><a {{action "showSignInModal"}}>Sign In</a></li>
{{outlet}}
{{outlet 'modal'}}

自举-modal.js:

this.$('.modal').modal().on('hidden.bs.modal', function() {
  alert("Closed");
  this.sendAction('removeModal');
}.bind(this));

路由/ application.js中:

export default Ember.Route.extend({
  actions: {
    showSignInModal: function() {
      this.render('components.signin-modal', {
        into: 'application',
        outlet: 'modal'
      });
    },
    removeModal: function(){
      alert("Working")
    }
    //...
  }
})

登入-modal.hbs:

{{#bootstrap-modal title="Sign In" ok='signin' okText="Signin"}}
<p>
  Please sign in. Thanks!
</p>
{{/bootstrap-modal}}

“关闭”警报显示,但“工作”警报不显示。 (登录模式是一个组件,没有定义任何动作,只是一个bootstrap-modal)

2 个答案:

答案 0 :(得分:1)

行动不会像事件冒泡一样传播

将你的bootstrap模态包装到一个组件中,并从signin-modal中为它调用removeModal动作。

答案 1 :(得分:1)

您没有正确传递您的操作名称。

您需要注意,sendAction方法如果无法找到操作名称,则会无声地失败。

确保您的模板中包含模态组件,您传递一个包含您要调用的操作名称的属性:

{{#bootstrap-modal title="Sign In" ok='signin' okText="Signin" removeModal="removeModal"}}

您可以阅读有关Passing Actions to Components

的更多信息