通过ember.js动作传递jQuery $(this)?

时间:2014-04-03 18:08:00

标签: javascript jquery ember.js

所以在我的代码中我有一个简单的常见问题,如下所示。

<section class="faq-section">
    <label class="question">Q:This is a Questions?</label>           
    <p class="answer">This is a an answer </p> 
</section>
<section class="faq-section">
    <label class="question">Q:This is a Questions?</label>           
    <p class="answer">This is an answer</p> 
</section>

我希望能够让用户点击问题并显示答案。在常规的jQuery中我会做这样的事情:

$( ".question" ).click().next( ".answer" ).toggle('slow');

我如何使用余烬路线和行动来完成这样的事情

<section class="faq-section">
    <label class="question" {{action openQuestion}}>Q:This is a Questions?</label>           
    <p class="answer">This is an answer</p> 
</section>

1 个答案:

答案 0 :(得分:1)

Ember通常希望您避免直接与DOM交互,因此我认为不存在对此类用法的内置支持。但我有一个类似的用例,我做了类似的事情:

<section class="faq-section">
    <label class="question" {{action 'openQuestion' questionId}}>blah</label>
    <p class="answer" {{bind-attr data-question-id=questionId}}>blah</p>
</section>

然后,在你的控制器中:

actions: {
    openQuestion: function(questionId) {
        this.$('.answer[data-question-id=' + questionId + ']').toggle('slow');
    }
}

这假设你可以为每个问题提出一个独特的questionId,但这不应该太难。