获取点击事件的绑定数据

时间:2016-02-01 11:54:04

标签: javascript html asp.net-mvc knockout.js asp.net-mvc-routing

这是我的Razor页面,其中包含多个div,每个div包含带有NeighbourhoodName和其他内容的follow或unfollow按钮。

 <p class="lead" style="display: none" data-bind="visible: profiles().length == 0">No neighbourhood found...</p>
 <ul data-bind="visible: profiles().length > 0, foreach: profiles">
 <li class="media" style="border-top: solid 1px lightgrey; padding-top: 15px;">    
    <div class="media-body">
        <h4 class="media-heading">
            <a class="btn pull-right" data-bind="visible: !IsFollowed, attr: { href: followAction }">Follow</a>
            <a class="btn btn-danger pull-right" data-bind="visible: IsFollowed, attr: { href: unfollowAction }">Unfollow</a>
        </h4>
        <em data-bind="text: NeighbourhoodName"></em>
        <em data-bind="text: NeighbourhoodId"></em>

    //stuck at this line
        <a href="/Neighbourhood/NeighbourhoodDetail/@Neig"> </a>
    </div>
</li>

我想点击任意一个div来生成一个新页面。所以,我想通过点击相应的div发送邻居的id到动作方法。现在,我能够使用data-bind属性获取NeighbourhoodId,但不知道如何通过点击div的任何区域将此id发送到action方法意味着如何混合此锚标记。类似的东西。

这是我在一个淘汰代码中的关注动作网址,它会在关注按钮上发送neighbourhoodId:

 self.followAction = location.protocol + "//" + location.host + '/Neighbourhood/Follow?uid=' + data.NeighbourhoodId;

但是,我不想要任何按钮。简单点击div应该发送id to action方法。 如何实现这一目标。请给我一些建议。

1 个答案:

答案 0 :(得分:0)

您只需在div上使用click binding,并将其绑定到viewmodel中的函数。

viewmodel中的函数接收bound元素中可用的knockout上下文作为参数。因此,您可以直接从该功能访问所需的数据。

<div class="media-body" data-bind="click: yourViewModelFunction">

在你的viewmodel中,你的函数应该像这样实现:

yourViewModelFunction = function(data) {
  // here you can use data.NeighbourhoodId
}