首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ember -为#link-to添加额外的操作

Ember -为#link-to添加额外的操作
EN

Stack Overflow用户
提问于 2013-11-08 00:49:39
回答 2查看 2.8K关注 0票数 0

我有一个简单的Ember应用程序,其中有一个动态生成的链接列表。在每个链接上单击一次,我就会显示有关所单击项目的一些详细信息。我还想将"ondblclick“事件添加到link-to中。这有可能吗?如果不是,我就不会连接到单击和双击的链接。我希望能够保留已有的用于单击事件的功能,并添加一个双击事件(理想情况下,无需同时触发单击事件)。我希望能够存储双击标题和与它们相关联的ids。为此,我尝试使用Ember.View对象(如下注释),并尝试将{{collectDoubleClicked“on="doubleClick"}}添加到链接中,但不起作用。到目前为止还没有发现。任何帮助都将不胜感激。这是我的HTML:

代码语言:javascript
运行
复制
<script type="text/x-handlebars" data-template-name="application">
    <div id="headerDiv">
        <ul>
            <li>
               <image src="logo.png" style="width:439px;height:102px;"/>
            </li>
            <li>
                {{#link-to 'home'}}Home{{/link-to}} | {{#link-to 'help'}}Help{{/link-to}}
            </li>
        </ul>
    </div>

    <div class="collections">
        {{partial 'collections'}}
    </div>

    <div class="statistics">
        {{outlet}}
    </div>
</script>

<script type="text/x-handlebars" id="collections">
    <div id='collectionsDiv'>
        {{#each}}
            {{#link-to 'item' this }}   <!-- {{action "collectToSearch" on="doubleClick"}} -->
                {{title}}
            {{/link-to}}
        {{/each}}
    </div>
</script>

和我的JavaScript:

代码语言:javascript
运行
复制
App = Ember.Application.create();

App.Router.map(function () {
    this.resource('home', {
        path: '/'
    });
    this.resource('help');
    this.resource('item', {
        path: ':item_id'
    });
});

App.ApplicationRoute = Ember.Route.extend({
    model: function () {
        return items;
    }
});
var items = [{
    id: 1,
    title: 'Item 1',
    contentType: 'Image',
    description: 'description 1'
}, {
    id: 2,
    title: 'Item 2',
    contentType: 'Text',
    description: 'description 2'
}, {
    id: 3,
    title: 'Item 3',
    contentType: 'Undefined',
    description: 'description 3'
}];

App.ApplicationController = Ember.ArrayController.extend({
    actions: {
        collectDoubleClicked

        function () {
            console.log("collectToSearch: ", this.get('model.title'));
        }
    }
});

/**
App.Application = Ember.View.extend({
    itemTitles: [items.length],
    itemIds: [items.length],
    itemCountDoubleClick: 0,

    doubleClick: function (title, id) {
        console.log("double click");
        itemTitles[itemCountDoubleClick] = title;
        itemIds[itemCountDoubleClick] = id;
        itemCountDoubleClick++;
        return false;
    }
});
**/
EN

回答 2

Stack Overflow用户

发布于 2013-11-08 01:15:09

您可以尝试如下所示:

代码语言:javascript
运行
复制
{{#link-to 'item' this }}
    <span {{action "doubleClickAction" on="doubleClick"}}>
        {{title}}
    </span>
{{/link-to}}

如果我的理解正确,span在链接之前捕获事件。但我认为,我们有更真实的方式

票数 2
EN

Stack Overflow用户

发布于 2013-11-09 13:02:19

我认为没有一种方法可以在不触发singleClick的情况下处理doubleClick。看看这个jsBin。甚至在doubleClick被触发之前,click已经被触发了两次。我理解你想要做什么,这是有道理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19841793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档