在我的应用中,我已经定义了这个组件:
// components/buy-functions.js
export default Ember.Mixin.create({
actions: {
openModal: function() {
$('#buyModal').openModal();
}
}
});
然后在路线的模板中:
<h5>Buy form</h5>
{{#buy-functions}}
<div class="btn" {{action "openModal"}}>Buy</div>
{{/buy-functions}}
(该组件没有模板)
但是当我点击按钮时我得到错误&#34;没有任何处理&#34; openModal&#34;行动... 有人可以解释我在这里做错了什么吗?
答案 0 :(得分:1)
您需要将行动发送到路线
openModal: function(modalName) {
this.sendAction('openModal',modalName);
}
}
将按钮更改为
<div class="btn" {{action "openModal" 'myModal'}}>Buy</div>
然后在你的路线
openModal: function(modalName) {
//do whatever you want
}
但另一种方式是:
让我们将您的组件更改为
// components/buy-functions.js
export default Ember.Component.extend({
actions: {
openModal: function() {
$('#buyModal').openModal();
}
}
});
然后创建您的组件模板
// tempaltes/components/buy-functions.hbs
<div class="btn" {{action "openModal"}}>Buy</div>
然后在您的路线模板中仅使用您的组件名称
{{buy-functions}}
我在飞行中编写了这些代码。希望对你有效。
答案 1 :(得分:1)
有一个附加组件(ember-route-action-helper)为这个用例提供帮助(路由操作)。