处理Emberjs

时间:2015-06-05 22:32:56

标签: javascript ember.js handlebars.js

为什么我的<button>有效但{{delete-toggle}}组件为消息变量提供了未定义的内容?

&#13;
&#13;
{{delete-toggle action='deleteMessage' message=message}}

<button {{action 'deleteMessage' message}}>Some Action (param: {{message}}</button>
&#13;
&#13;
&#13;

&#13;
&#13;
import Ember from 'ember';

export default Ember.Component.extend({
    tagName: '',
    actions: {
        deleteMessage(message){ 
            console.log(message); 
            return this.sendAction('deleteMessage', message);
        }
    }
});
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

{{delete-toggle}}组件在没有参数的情况下触发默认操作,但您的deleteMessage操作处理程序需要一个。另一方面,该按钮显式传递其{{action 'deleteMessage' message}}说明符中的参数。

为什么要传递参数,因为组件已经知道所涉及的消息?

{{delete-toggle action='deleteMessage' message=message}}

export default Ember.Component.extend({

    // ATTRIBUTES
    message: null,

    // ACTIONS
    actions: {
        deleteMessage(){ 
            var message = this.get('message');
            console.log(message); 
            this.sendAction('deleteMessage', message);
        }
    }

});

然后您可以将按钮更简单地写为

<button {{action 'deleteMessage'}}>Some Action (param: {{message}}</button>
顺便说一句,我不推荐空标签。你有这样做的原因吗?另外,我认为从动作处理程序返回一个值不会有用。