2

我是 Ember 的初学者。我有很多链接(即),带有attritube“名称”,当我点击其中一个时,我想获得这个属性。我知道如何只使用一个和 bindAttr,但是更多我正在尝试使用此代码,但无法正常工作。我需要为每个链接使用许多 bindAttr ???,昨天我做了这个(只有一个链接):

<body>

    <div id="templateHere"></div>

            <!--handlebar-->
    <script type="text/x-handlebars" data-template-name="text">
            <h1>Send the message:</h1>              
            <a {{action "clicked" on="click"}} name='link1'>Click me!!</a>
            <a {{action "clicked" on="click"}} name='link2'>click me again</a>
    </script>​





    <script>
            //namespace
            App = Ember.Application.create();

            //define view 
            App.myview = Ember.View.extend({
                            templateName: 'text',
                            name_attribute:'name_buttooooon',               
                            message: '',
                            clicked: function(event) {
                            console.log(jQuery(this).attr('name'));//get attribute name value
                            }                               
            });

            //create view
            App.myview=App.myview.create();

            //insert view in body
            $(function() {
                App.myview.append('#templateHere');
            });

    </script>

</body>
4

1 回答 1

3

您可以通过使用event.currentTarget. 它是一个jQuery 属性

描述:事件冒泡阶段中的当前 DOM 元素。

此属性通常等于函数的 this。

如果您使用 jQuery.proxy 或其他形式的范围操作,这将等于您提供的任何上下文,而不是 event.currentTarget

我猜 Ember 为事件制作了一些特殊的上下文,因为 jQuery 文档说currentTarget应该等于this.

所以它在你的代码中看起来像这样:

clicked: function(event) {
    console.log($(event.currentTarget).attr('name'));
}

您可以在此 JSFiddle中尝试此解决方案。

于 2012-10-07T19:07:15.897 回答